JTable, selection de cellule et gestion d'évènement

JTable, selection de cellule et gestion d'évènement - Java - Programmation

Marsh Posté le 30-11-2002 à 18:31:09    

bin voilà, je voudrai simplement catcher l'évènement "une cellule est selectionnée dans ma JTable.
 
bon mon code :

Code :
  1. public class TableMois extends JPanel {
  2.     private JTable table;
  3.     public TableMois(final Calendar calendar) {
  4.         table = new JTable(new TableMoisModel(calendar));
  5.        
  6.         // je veux pouvoir selectionner une cellule à la fois
  7.         table.setRowSelectionAllowed(true);
  8.         table.setColumnSelectionAllowed(true);
  9.         table.setCellSelectionEnabled(true);
  10.        table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  11.        
  12.         // mon listener
  13.         TableMoisSelectionListener tableMoisSelectionListener=new TableMoisSelectionListener();
  14.         // mon listener est attentif aux changements de colonne
  15.         table.getColumnModel().getSelectionModel().addListSelectionListener(tableMoisSelectionListener);
  16.         // et aux changements de lignes
  17.         table.getSelectionModel().addListSelectionListener(tableMoisSelectionListener);
  18.        
  19.         // ...
  20.     }
  21.    
  22.     // ...
  23. }


 
Pb : c'est que j'arrive seulement à catcher "une colonne est selectionnée" ou une "ligne est selectionnée". Pour ruser, j'ai mis les deux dans mon source, mais du coup quand je selectionne un élément qui modifie la colonne et la ligne, et ben je déclenche deux événements :/
 
Bon, j'ai cherché et je trouve pas, mais il doit bien y a voir un truc ...

Reply

Marsh Posté le 30-11-2002 à 18:31:09   

Reply

Marsh Posté le 30-11-2002 à 19:26:06    

tu implementes TableModelListener et tu définis donc le corps de la méthode void tableChanged(TableModelEvent) et la dedans tu as juste a recuperer la ligne en faisant un getFirstRow() et de meme pour la colonne

Reply

Marsh Posté le 01-12-2002 à 12:15:38    

heu non, ça marche pas trop. Mais TableModelListener, ça sert à détecter les changements de valeurs dans la table, et moi c'est pas ça que je veux (ma table n'est pas editable d'ailleurs). Ou alors je m'y suis pas bien pris ...


Message édité par bobuse le 01-12-2002 à 12:16:09
Reply

Marsh Posté le 01-12-2002 à 14:55:50    

bobuse a écrit a écrit :

heu non, ça marche pas trop. Mais TableModelListener, ça sert à détecter les changements de valeurs dans la table, et moi c'est pas ça que je veux (ma table n'est pas editable d'ailleurs). Ou alors je m'y suis pas bien pris ...




 
ben c comme ca que je fais et ca marche ...

Reply

Marsh Posté le 01-12-2002 à 15:26:38    

Reply

Marsh Posté le 01-12-2002 à 17:26:40    


oui ok, mais ça, ça définit la manière de selectionner les lignes, donc si j'y ajoute un listener, ça ne detectera que les changements de lignes, et pas de cellules sur un même ligne ...
 
Pffff, ça se perd vite le Java, en 2 mois, je suis (re)devenu ... heu je sais pas quoi, mais pas top (je rame un peu) ! arf

Reply

Marsh Posté le 01-12-2002 à 17:37:01    

bobuse a écrit a écrit :

 
oui ok, mais ça, ça définit la manière de selectionner les lignes, donc si j'y ajoute un listener, ça ne detectera que les changements de lignes, et pas de cellules sur un même ligne ...
 
Pffff, ça se perd vite le Java, en 2 mois, je suis (re)devenu ... heu je sais pas quoi, mais pas top (je rame un peu) ! arf




 
ben t'as fait comment ton truc la
 
l'object qui contient la jtable implemente tablemodellistener et pis y a pas de soucis particulier, ca marche tres bien apres getfirstrow et getfirstcolumn
 
t'as essayé ?

Reply

Marsh Posté le 01-12-2002 à 17:42:41    

bobuse a écrit a écrit :

 
Pffff, ça se perd vite le Java, en 2 mois, je suis (re)devenu ... heu je sais pas quoi, mais pas top (je rame un peu) ! arf




tu vas pas très loin dans les liens que je te file ...
http://java.sun.com/j2se/1.4/docs/ [...] nListener)

Reply

Marsh Posté le 01-12-2002 à 17:58:52    

benou a écrit a écrit :

 
tu vas pas très loin dans les liens que je te file ...
http://java.sun.com/j2se/1.4/docs/ [...] nListener)




Mais si, je suis allé voir (et j'y étais déjà allé avant, quand même ;) ), mais ça concerne que la selection de ligne.
 
happyharry -> void tableChanged(TableModelEvent) est appelée quand un élément de la table est modifié, non ? En tout cas quand je selectionne une cellule, elle n'est pas appelée (celle que j'ai implémentée)

Reply

Marsh Posté le 01-12-2002 à 18:23:29    

bobuse a écrit a écrit :

 
Mais si, je suis allé voir (et j'y étais déjà allé avant, quand même ;) ), mais ça concerne que la selection de ligne.



t'es sur ???

Reply

Marsh Posté le 01-12-2002 à 18:23:29   

Reply

Marsh Posté le 01-12-2002 à 18:48:25    

benou a écrit a écrit :

 
t'es sur ???




ha ben ouais ... :(

Reply

Marsh Posté le 01-12-2002 à 19:39:51    

benou a écrit a écrit :

 
ha ben ouais ... :(



et ouais ...  
 [:nowad]

Reply

Marsh Posté le 01-12-2002 à 20:22:15    

bobuse a écrit a écrit :

 
Mais si, je suis allé voir (et j'y étais déjà allé avant, quand même ;) ), mais ça concerne que la selection de ligne.
 
happyharry -> void tableChanged(TableModelEvent) est appelée quand un élément de la table est modifié, non ? En tout cas quand je selectionne une cellule, elle n'est pas appelée (celle que j'ai implémentée)
 




 
euh j'vais verifier ca alors :whistle:

Reply

Marsh Posté le 01-12-2002 à 22:30:31    

hop je m'auto flagelle, c pas le bon truc que je regardais

Reply

Marsh Posté le 01-12-2002 à 22:31:18    

pkoi tu veux catcher l'evenement au fait ? tu veux faire quoi exactement ?
 

Reply

Marsh Posté le 02-12-2002 à 17:15:18    

HappyHarry a écrit a écrit :

pkoi tu veux catcher l'evenement au fait ? tu veux faire quoi exactement ?




Ben en fait j'affiche un tableau avec les jours du mois (les colonnes sont les jours de la semaine). Et quand on clique sur une case (qui contient un jour du mois affiché), je voudrai par exemple afficher des infos sur les événements associés à cette date ... voilà voilà

Reply

Marsh Posté le 02-12-2002 à 17:17:54    

bobuse a écrit a écrit :

 
Ben en fait j'affiche un tableau avec les jours du mois (les colonnes sont les jours de la semaine). Et quand on clique sur une case (qui contient un jour du mois affiché), je voudrai par exemple afficher des infos sur les événements associés à cette date ... voilà voilà




 
ce que j'ai fait, c ajouter un MouseListener pour catcher le click
et a partir de la getSelectedRow() et getSelectedColumn te donnent les coordonnées de la cellule

Reply

Marsh Posté le 02-12-2002 à 17:20:58    

HappyHarry a écrit a écrit :

 
 
ce que j'ai fait, c ajouter un MouseListener pour catcher le click
et a partir de la getSelectedRow() et getSelectedColumn te donnent les coordonnées de la cellule




ouais ok, j'y avais déjà pensé, mais je m'étais dit (comme d'habitude  :sarcastic: ) : y a bien un moyen de faire ça avec ces tas de TableModel à la con (oups ... pardon !)
Je crois que je vais faire comme ça ... finalement !
merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed