Salut,
J'ai un probleme avec la fct addRow depuis que j'ai changé DefaultModele par mon propre modele
Je cree ma classe modele, j'ajoute un "extends DefaultModele". Jusqu'à tout va bien. Je remplace ensuite tous les defaultmodeles par mon nouveau modele. Enfin j'associe le modele crée avec la JTable. Jusqu'ici pas d'erreur!
Le truc c'est que quand il tente d'ajouter un ligne à la JTable par le biais de "addRow" j'obtiend une exepetion que je catch :
Mon programme est construit comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 listfolder - Exception = 0 >= 0;cause null;Stack [Ljava.lang.StackTraceElement;@360be0;localized at 0 >= 0
Je construit mon interface dans une classe.
Dans une autre classe, je construit ma JTable que je peux renvoyer par l'intermédaire d'une fct "getJTable".
Dans une autre classe, je cree le modele avec toutes les méthodes nécessaires!
J'associe le modele à la JTable dans la classe ou celle-ci est crée. Je peux renvoyer le modele par l'intermediaire d'une fct.
L'affichage de la JTable se passe bien mais l'ajout ne fonctionne pas (cf. exception).
Sachez enfin qu'avec un defaultmodel, cette même table fonctionne parfaitement, ajout compris!
j'ai utilisé le model dvp par un des membres de ce forums :
http://www.developpez.net/forums/att...7&d=1145880777
J'initialise la JTable comme suit :
Dans mon interface j'utilise la JTable avec le code suivant:
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 import java.awt.Color; import javax.swing.*; import javax.swing.table.*; public class JFileTable { // Instance attributes used in this example private JTable table; private String columnNames[]; private Object dataValues[][]; private JFileModelTable modele; JFileTable(){ // Create columns columnNames = new String[]{"ID", "Fichier", "Chemin", "Type", "Taille"}; dataValues = new Object[0][5]; // Create a new table instance table = new JTable(); modele = new JFileModelTable(columnNames,dataValues); table.setModel(modele); // Configure some of JTable's paramters table.setShowHorizontalLines( false ); table.setRowSelectionAllowed( true ); table.setColumnSelectionAllowed( false ); //table.getColumnModel().getColumn(0).setPreferredWidth(5); table.getColumnModel().getColumn(0).setMaxWidth(35); table.getColumnModel().getColumn(0).setMinWidth(30); table.getColumnModel().getColumn(3).setMaxWidth(90); table.getColumnModel().getColumn(3).setMinWidth(40); table.getColumnModel().getColumn(4).setMinWidth(40); table.getColumnModel().getColumn(4).setMaxWidth(150); // Change the selection colour table.setSelectionForeground( Color.white ); table.setSelectionBackground( Color.lightGray ); } public JTable getJTable(){ return table; } public JFileModelTable getJTableModel(){ return modele; } }
Enfin pour ajouter une ligne j'execute la commande suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 JFileTable newTable = new JFileTable(); fileList = newTable.getJTable();//fileList ets de type JTable modele = newTable.getJTableModel();// Creation du modele de table fileList.addMouseListener(this);
A ce moment j'obtiens une exeption et aucune ligne n'est rajouté!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // AddRowModel = type : private JFileModelTable addRowModel; addRowModel.addRow(new String [] {""+addRowModel.getRowCount(), roots[i].getName(),roots[i].getPath(), new Fichier(roots[i].getPath()).getFileExtention(null).toLowerCase(), Fichier.convertSizeToHuman(roots[i].length())});
Savez vous d'ou vient le probleme. Et sinon le cas echéant, savez vous s'il est possible d'empecher l'edition sans pour autant coder un nouveau model.
Merci bcp
Partager