Probleme dans JTable ( Probléme des champs vides )

amine1234Z Messages postés 134 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 mai 2010 - 15 avril 2008 à 01:19
amine1234Z Messages postés 134 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 mai 2010 - 19 avril 2008 à 21:38
Probléme de champs vides:::::::

c'est Urgent !! pour l'elaboration de mon application, SVP aider moi !!

quand je veux affichier des enregistrement provenant d'une table dans un JTable, l'erreur se produit, j'ai constater
que le 1er enregistrement qui doit normalement s'afficher, contien un ou plusieur champs vides, donc voila
quand j'ai remplit tous les champs concernant ce enregistrement l'erreur a desparu.
maintenant je veux afficher mes enregistrements meme qu'ils ont des champs vides.

Merci infeniment


Voila l'erreur:

java.lang.NullPointerException

at desra.Cadre4$1.getColumnClass(Cadre4.java:178)

at javax.swing.JTable.getCellRenderer(JTable.java:3700)

at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:1148)

at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1051)

at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:974)

at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)

at javax.swing.JComponent.paintComponent(JComponent.java:541)

at javax.swing.JComponent.paint(JComponent.java:808)

at javax.swing.JComponent.paintChildren(JComponent.java:647)

at javax.swing.JComponent.paint(JComponent.java:817)

at javax.swing.JViewport.paint(JViewport.java:722)

at javax.swing.JComponent.paintChildren(JComponent.java:647)

at javax.swing.JComponent.paint(JComponent.java:817)

at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4795)

at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4748)

at javax.swing.JComponent._paintImmediately(JComponent.java:4692)

at javax.swing.JComponent.paintImmediately(JComponent.java:4495)

at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)

at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

4 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
15 avril 2008 à 07:32
Où est ton problème?

Où est ton problème?
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
15 avril 2008 à 09:13
Salut:

Sans un bout de code on ne peut rien faire.
0
amine1234Z Messages postés 134 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 mai 2010 4
16 avril 2008 à 00:07
ok merci
je vais le coller demain, mtn je suis entrin de le copie
hh
@+
0
amine1234Z Messages postés 134 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 31 mai 2010 4
19 avril 2008 à 21:38
Bonsoir
voila j'ai ajouter juste le code, j'ai pas pu ajouter la base de donnée
est ce que qlq un peut m'aider maitenant
SVP c'est a vous de la créé
et la renomer "Base.mdb"
, pour faire le test aprés. ajouter la Base dans le meme repertoir que la classe
une chose a mentioner:
>>crée 3 colocne par ex: N°,Nom,Prenom
>>remplire just le N° dans le 1er enregistrment
>>r
emplire just le N°,Nom dans le 2éme enregistrment

>>r
emplire just le N°,Nom dans le 3éme enregistrment
comme ca vous allez laisser la colone Prenom vides =>> dans ce cas
le probléme se lance
voila le code




import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.Vector;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;

import java.sql.Time;
 import java.text.SimpleDateFormat;
 import java.awt.*;
 import java.io.*;
 import java.sql.*;
 import java.util.*;
 import java.util.Date;
 import javax.swing.*;
 import javax.swing.event.*;
 import javax.swing.table.*;
import javax.swing.border.*;
 import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;
import java.util.Vector;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.*;
import java.awt.*;

import java.sql.*;
import java.awt.event.*;
import java.awt.print.*;
 import java.util.*;
import java.lang.String;

/**
 * Titre :

 * Description :DESRA

 * Copyright : Copyright (c) 2008

 * Société : DERD

 * @author Youssef
 * @version 1.0
 */

public class Cadre4 extends JFrame {

  public String NomTable;
  JPanel contentPane;
 private static DefaultTableModel tableModel;
 private  ResultSet rs;
 private  Statement stmt;
 private  ResultSetMetaData md;
 private  int colonnes;

  JPanel jPanel1 = new JPanel();
  JButton jButton1 = new JButton();
  JTable Table = new JTable();
  JScrollPane scTable = new JScrollPane();
  TitledBorder titledBorder1;

  //Construire le cadre
  public Cadre4() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);

    //MMMP
    tableModel = new DefaultTableModel();
    Table = new JTable(tableModel) {

        private static final long serialVersionUID = 1L;

               public Class getColumnClass(int column) {

 return getValueAt(0, column).getClass();

                       }

    };

    scTable = new JScrollPane(Table);
    tableModel.addTableModelListener(new TableModelListener() {

          public void tableChanged(TableModelEvent evnt) {

          updateDBRow(evnt);

           }

       });
       try {
           jbInit();

            this.resize(1024,768);

         }
         catch(Exception e) {
           e.printStackTrace();
         }

//MMPPP
  }

  public static void setTableData(Vector d, Vector colname) {

              tableModel.setDataVector(d,colname);

  }

  public Class getColumnClass(int columnIndex) {

              return Boolean.class;

  }

  public void updateDBRow(TableModelEvent evt) {

       Object old = "";

       try {

              if(evt.getType() == TableModelEvent.UPDATE && evt.getColumn() != -1){

              rs.absolute(evt.getFirstRow()+1);

              rs.getObject(evt.getColumn()+1);

              rs.updateObject(evt.getColumn()+1,tableModel.getValueAt(evt.getFirstRow(),evt.getColumn()));

              rs.updateRow();

                         }

       } catch (SQLException e) { JOptionPane.showMessageDialog(null,"Erreur"+e,"Warning",JOptionPane.ERROR_MESSAGE);

         //tableModel.setValueAt(old,evt.getFirstRow(),evt.getColumn());

         }

  }

  //Initialiser le composant
  private void jbInit() throws Exception  {
    contentPane = (JPanel) this.getContentPane();
    titledBorder1 = new TitledBorder("");
    contentPane.setLayout(null);
    this.getContentPane().setBackground(SystemColor.scrollbar);
    this.setLocale(java.util.Locale.getDefault());
    this.setSize(new Dimension(986, 836));
    this.setTitle("jj");
    this.addWindowListener(new Cadre4_this_windowAdapter(this));
    jPanel1.setBackground(new Color(157, 185, 235));
    jPanel1.setBorder(BorderFactory.createEtchedBorder());
    jPanel1.setDebugGraphicsOptions(0);
    jPanel1.setBounds(new Rectangle(17, 387, 916, 287));
    jPanel1.setLayout(null);
    jButton1.setBounds(new Rectangle(495, 263, 76, 25));
    jButton1.setOpaque(false);
    jButton1.setText("Actual");
    jButton1.addActionListener(new Cadre4_jButton1_actionAdapter(this));
    scTable.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    scTable.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    scTable.setBounds(new Rectangle(7, 6, 903, 275));
    contentPane.setBackground(UIManager.getColor("InternalFrame.inactiveTitleBackground"));
    Table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    contentPane.add(jPanel1, null);
    jPanel1.add(scTable, null);
    contentPane.add(jButton1, null);
    scTable.getViewport().add(Table, null);

  }

  //Redéfini, ainsi nous pouvons sortir quand la fenêtre est fermée
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {

    }
  }

  void jButton1_actionPerformed(ActionEvent e) {

    try {

                       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                       Connection conn = DriverManager.getConnection("jdbc:odbc:DRIVER=Microsoft Access Driver (*.mdb); DBQ=Base.mdb;");
                        stmt = conn.createStatement();
                        rs = stmt.executeQuery("SELECT * FROM  Table1");

                        md = rs.getMetaData();

                        colonnes = md.getColumnCount();

                        Vector nomColonnes = new Vector();

                        Vector data = new Vector();

                        for (int i = 1; i <= colonnes; i++) {

                             nomColonnes.addElement(md.getColumnName(i));

                        }

                        while (rs.next()){

                              Vector row = new Vector();

                               for (int i = 1; i <= colonnes; i++){

                                    row.addElement(rs.getObject(i));

                               }

                               data.addElement(row);

                         }
                         setTableData(data, nomColonnes);

                      } catch (Exception ex) {
                  //JOptionPane.showMessageDialog(null, "Erreur : " + ex, "Warning", JOptionPane.ERROR_MESSAGE);

                }

  }

  void this_windowClosing(WindowEvent e) {

  }
 public static void main(String args[]) {
     Cadre4 hh = new Cadre4();
     hh.show();
    }

}

class Cadre4_jButton1_actionAdapter implements java.awt.event.ActionListener {
  Cadre4 adaptee;

  Cadre4_jButton1_actionAdapter(Cadre4 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jButton1_actionPerformed(e);
  }
}

class Cadre4_this_windowAdapter extends java.awt.event.WindowAdapter {
  Cadre4 adaptee;

  Cadre4_this_windowAdapter(Cadre4 adaptee) {
    this.adaptee = adaptee;
  }
  public void windowClosing(WindowEvent e) {
    adaptee.this_windowClosing(e);
  }
}

voila le message d'erreur:

java.lang.NullPointerException

    at test.Cadre4$1.getColumnClass(Cadre4.java:87)

    at javax.swing.JTable.getCellRenderer(JTable.java:3700)

    at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:1148)

    at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1051)

    at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:974)

    at javax.swing.plaf.ComponentUI.update(ComponentUI.java:142)

    at javax.swing.JComponent.paintComponent(JComponent.java:541)

    at javax.swing.JComponent.paint(JComponent.java:808)

    at javax.swing.JComponent.paintChildren(JComponent.java:647)

    at javax.swing.JComponent.paint(JComponent.java:817)

    at javax.swing.JViewport.paint(JViewport.java:722)

    at javax.swing.JComponent.paintChildren(JComponent.java:647)

    at javax.swing.JComponent.paint(JComponent.java:817)

    at javax.swing.JComponent.paintWithOffscreenBuffer(JComponent.java:4795)

    at javax.swing.JComponent.paintDoubleBuffered(JComponent.java:4748)

    at javax.swing.JComponent._paintImmediately(JComponent.java:4692)

    at javax.swing.JComponent.paintImmediately(JComponent.java:4495)

    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:410)

    at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:117)

    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:178)

    at java.awt.EventQueue.dispatchEvent(EventQueue.java:454)

    at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)

Merci beaucoup 1000 fois.
0