#1 Le 24/12/2006, à 12:13
- Yes
Editer toutes les cases d'une JTable
Bonjour,
je souhaiterai pouvoir éditer toutes les cases d'une JTable mais je ne sais pas comment faire.
Ce code me permet d'éditer les cases de la colonne 3 de la JTable maTable :
TableColumn cC = maTable.getColumnModel().getColumn(3);
Mais pour toutes les cases quel code me faut-il écrire ?
Merci
#2 Le 24/12/2006, à 13:17
- pcamut
Re : Editer toutes les cases d'une JTable
Je n'ai pas vraiment compris qui doit modifier les données : ton programme, ou l'utilisateur de ton programme ?
donc voici :
Normalement tu dois avec une classe que te sert de TableModel (regarde la classe AbstractTableModel) , en modifiant les données directement dans ton table model , puis en utilisant la notification d'evenement dispo sur JTable tu arriave a changer les données de toute ta table.
Sinon toutjour sur abstracttablemodel tu as une method qui s'appelle isCelleEditable(row,column) que tu peux overider dans ton implementation est qui doit retourner true si ton utilisateur peut modifier les données.
Dans tout les cas, voici un peu d'aider directement chez sun :
http://java.sun.com/docs/books/tutorial … index.html
sur cette page tu vas pouvoir lancer le swingset demo, c'est tres bien fait, et pour chaque example tu peux voir le code qui va avec :
http://java.sun.com/products/javawebstart/demos.html
Ubuntu 7.04 - Debian Lenny Amd64
Core2Duo E6320@2.8GHz - 2 Go Ram - 7300Gt PCIe - Asus P5B-e plus - 160 Go et 500 Go - Dual Screen
Hors ligne
#3 Le 24/12/2006, à 14:10
- Yes
Re : Editer toutes les cases d'une JTable
Je n'ai pas vraiment compris qui doit modifier les données : ton programme, ou l'utilisateur de ton programme ?
donc voici :
Normalement tu dois avec une classe que te sert de TableModel (regarde la classe AbstractTableModel) , en modifiant les données directement dans ton table model , puis en utilisant la notification d'evenement dispo sur JTable tu arriave a changer les données de toute ta table.
Sinon toutjour sur abstracttablemodel tu as une method qui s'appelle isCelleEditable(row,column) que tu peux overider dans ton implementation est qui doit retourner true si ton utilisateur peut modifier les données.
Dans tout les cas, voici un peu d'aider directement chez sun :
http://java.sun.com/docs/books/tutorial … index.htmlsur cette page tu vas pouvoir lancer le swingset demo, c'est tres bien fait, et pour chaque example tu peux voir le code qui va avec :
http://java.sun.com/products/javawebstart/demos.html
Salut,
pour faire mon exemple, je me suis inspiré de ce lien
http://brassens.upmf-grenoble.fr/IMSS/dciss/Enseignements/PSR/Prog/Java/CoursJava/SwingTable.htm
Le code que j'ai écrit fonctionne mais dans l'exemple, seul la colonne 3 peut être édité car le programme utilise cette ligne :
TableColumn cC = maTable.getColumnModel().getColumn(3);
Ce que je voudrais savoir, c'est comment remplacer cette ligne pour que toutes les cases peuvent être éditées et pas seulement les cases de la colonne 3
Merci
#4 Le 24/12/2006, à 15:09
- pcamut
Re : Editer toutes les cases d'une JTable
ok
dans l'exemple il y a cette methode :
public boolean isCellEditable(int row, int col) {
// toutes les cellules éditables :
return true;
// seules les premières de chaque colonne
return row ==0;
[b] // seules les cellules de la colonne 3[/b]
return col == 3;[/b]
}
si elle retourne tout le temps true, toutes tes colonnes seront editables !
le code suivant :
Il faut alors associer dans la table L’éditeur à la colonne qu’il édite :
TableColumn cC = maTable.getColumnModel().getColumn(3);
cC.setCellEditor(new EditeurCouleur(););
permet de mettre un editeur custom sur la colonne 3,
par contre ca :
On peut utiliser un des éditeurs standards JTextField, JComboBox, ou JCheckBox de la façon suivante :
JComboBox comboBox = new JComboBox();
comboBox.addItem("école");
comboBox.addItem("standard");
comboBox.addItem("performance");
comboBox.addItem("compétition");
. . .
TableColumn cH = jTable2.getColumnModel().getColumn(2);
cH.setCellEditor(DefaultCellEditor(comboBox););
ca permet de specifier un editeur standar sur une colonne, au lieu de mettre une combo box, tu peux mettre un textfield
tu dois pouvoir faire quelque chose du genre
for(int nbcol =0; nbcol<10;nbcol++){
TableColumn cH = jTable.getColumnModel().getColumn(nbcol);
cH.setCellEditor(DefaultCellEditor(new JTextField()));
}
attention , tout ca c'est de memoire , il y a pas mal de temps que je n'ai plus fait de swing
Ubuntu 7.04 - Debian Lenny Amd64
Core2Duo E6320@2.8GHz - 2 Go Ram - 7300Gt PCIe - Asus P5B-e plus - 160 Go et 500 Go - Dual Screen
Hors ligne