Listener JTable

Listener JTable - Java - Programmation

Marsh Posté le 19-12-2008 à 11:04:57    

Bonjour,
 
Je galère depuis quelques jours pour ajouter un listener sur une classe qui extends JTable
 

Code :
  1. public class myTable extends JTable{
  2. ...
  3. ...
  4. }


 
En fait lorsqu'un utilisateur modifie une valeur de myTable je dois répercuter cette modification dans une autre table nommée "model"
 
Je veux donc savoir comment récupérer au bon endroit l'évènement de modification de myTable pour pouvoir mettre la nouvelle valeur également dans model.

Reply

Marsh Posté le 19-12-2008 à 11:04:57   

Reply

Marsh Posté le 19-12-2008 à 11:28:39    

Sun Tutorial : How to Use Tables > "Listening for Data Changes".

Reply

Marsh Posté le 19-12-2008 à 13:39:12    

Ok, merci. J'avais en effet vu ça mais je me laissais brouiller par une solution que j'avais vu avant.
 
Dernier point, comment déclencher un listener existant sur la table model.  
Quand je met à jour ma valeur dans model, je veux qu'une action déjà existante soit faite comme quand l'utilisateur change directement la valeur dans model.
 

Reply

Marsh Posté le 20-01-2009 à 15:42:41    


Si tu implémentes ta méthode "action" sans faire de référence aux objets Event de Swing, tu peux l'invoquer hors du contexte de traitement d'un évènement, pourvu que tu lui transmettes les bons arguments (ici j'ai pris Object pour faire simple)
 
Ex:
maTable.addCellListener(new CellEditorListener() {
   // Méthode appelée lorsque l'évènement Swing a lieu
   public void editingStopped(ChangeEvent e) {
        // Récupérer les infos nécessaires à l'exécution de l'action (parsing Event + appel aux données du modèle)
        Object info = extractInfoFromEvent(e);
        // Invoquer l'implémentation
        doActionOnInfo(info);
   }
   ...
});
 
// Méthode d'implémentation
public void doActionOnInfo(Object info) {
    // Implémentation de l'action à effectuer
}
 
 
 

Reply

Marsh Posté le 03-02-2009 à 13:49:59    

Si ton model hérite de la classe AbstractTableModel (c'est le cas de DefaultTableModel), il te suffit d'appeler la méthode "fireTableChanged" et compagnie.


Message édité par post_it le 03-02-2009 à 13:50:34
Reply

Sujets relatifs:

Leave a Replay

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