Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

pcamut a écrit :

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

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