Bonjour,

J'ai un problème avec JTable, J'ai un JTable qui doit être vierge au début et qui se rempli une fois un bouton cliqué.
J'ai un message lors de l'initialisation du JTable au lancement de l'appli, effectivement au lancement getColumnClass déclenche une erreur car il n'y a pas de valeur connu.

Une fois le bouton cliqué , il me remplit bien le tableau
Comment régler ce problème?
Merci

Message d'erreur :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at essai_JTable.CopyOfCopyOfJTableDemo$MyTableModel.getColumnClass(CopyOfCopyOfJTableDemo.java:425)
at javax.swing.JTable.getColumnClass(Unknown Source)
at javax.swing.JTable.getCellRenderer(Unknown Source)
at javax.swing.plaf.synth.SynthTableUI.paintCell(Unknown Source)
at javax.swing.plaf.synth.SynthTableUI.paintCells(Unknown Source)
at javax.swing.plaf.synth.SynthTableUI.paint(Unknown Source)
at javax.swing.plaf.synth.SynthTableUI.update(Unknown Source)
...

Mode code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
public class CopyOfCopyOfJTableDemo {
private String[] columnNames = {"Nom du fichier", "Emplacement", "Taille", "Fichier identique", "Supprimer"};
 
    private Object [][] data = new Object[100][5];
    MyTableModel model;
    private JTable table;
 
    JFrame frame = new JFrame("FramePrincipale");
    Container content = frame.getContentPane();
 
    public CopyOfCopyOfJTableDemo() {
    	model = new MyTableModel();
        table = new JTable(model);
 
...
}
public class MyTableModel extends AbstractTableModel {
    	public int getColumnCount() {
            return columnNames.length;
        }
 
        public int getRowCount() {
            return data.length;
        }
 
        public String getColumnName(int col) {
            return columnNames[col];
        }
 
        public Object getValueAt(int row, int col) {
            return data[row][col];
        }
 
        /*
         * JTable utilise cette methode pour determiner le renderer/ par defaut
         * éditeur pour chaque cellule. Si nous ne avions pas mis en œuvre cette méthode, alors la dernière colonne serait contenir du texte ("true" / "false"),
         * plutôt que d'une case à cocher.
         */
        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }
        /*
         * Ne pas besoin de mettre en œuvre cette méthode, sauf si la table n'est pas ou partir pas éditable
         * 
         */
        public boolean isCellEditable(int row, int col) {
            //Note that the data/cell address is constant,
            //no matter where the cell appears onscreen.
            if (col < 2) {
                return false;
            } else {
                return true;
            }
        }
 
        /*
         * Ne pas besoin de mettre en œuvre cette méthode, sauf si les données de votre table peuvent changer.
         * 
         */
        public void setValueAt(Object value, int row, int col) {
            data[row][col] = value;
            fireTableCellUpdated(row, col);
        }
    }

Bonne journée