IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

Utilisation de TableModelListener


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Par défaut Utilisation de TableModelListener
    Bonjour

    Je n'ai pas trouvé comment faire pour savoir si une cellule a été modifiée dans une JTable. Car en faisant des test, j'ai remarqué qu'un TableModel Event est déclenché même quand la cellule n'est pas réellement modifié. il suffit de double cliquer dans la cellule sans faire de modification et la quitter ou cliquer sur une autre.
    Comment faire pour savoir s'il y a eu réellement une modification ?
    Faut-il employer un autre listener?

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Par défaut
    Salut,

    Pour savoir si une cellule a été modifiée dans une JTable, tu peux opter pour une surcharge du CellEditor ou sinon utiliser PropertyChangeSupport dans ton TableModel et capturer les modifications de cellules via un PropertyChangeListener.
    C'est la deuxième solution que je prèfère du coup, je te met un exemple simple d'utilisation...

    Ici un exemple de TableModel avec un PropertyChangeListener:

    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
     
    class MonModel extends DefaultTableModel{
     
        private static final long serialVersionUID = 1L;
        PropertyChangeSupport propertyChangeSupport;
     
        public MonModel(Object[][] data, Object[] columnNames) {
            super(data,columnNames);
            propertyChangeSupport =  new PropertyChangeSupport(this);
        }
     
        @Override
        public void setValueAt(Object aValue, int row, int column) {
            propertyChangeSupport.firePropertyChange("Cell", getValueAt(row, column), aValue);
            super.setValueAt(aValue, row, column);
        }
     
        public void addPropertyChangeListener(PropertyChangeListener listener){
            propertyChangeSupport.addPropertyChangeListener(listener);
        }
    }
    MonModel sera le model de ma JTable sur lequel on va poser un écouteur de changement de propriétés :


    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
     
    public class TestModifTable {
     
        public static void main(String[] argv) {
            Object nomsColonnes[] = { "Colonne 1", "Colonne 2"};
            Object datas[][] = {
                    { "100", "200"},
                    { "300", "400"} ,
                    { "500", "600"}
            };
     
            MonModel model = new MonModel(datas, nomsColonnes);
     
            final JTable table = new JTable(model);
            model.addPropertyChangeListener(new PropertyChangeListener() {
                @Override
                public void propertyChange(PropertyChangeEvent evt) {
                    if (evt.getPropertyName().equals("Cell")) {
                        int ligne = table.getSelectedRow();
                        int colonne = table.getSelectedColumn();
     
                        System.out.println("La Cellule (" + ligne + ", " + colonne +
                                ") a été modifiée. La nouvelle valeur est : "
                                + evt.getNewValue());
                    }
                }
            });
     
            final JFrame f = new JFrame();
            f.setSize(300,300);
            f.add(new JScrollPane(table), BorderLayout.CENTER);
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            SwingUtilities.invokeLater(new Runnable() {
                @Override
                public void run() {
                    f.setVisible(true);
                }
            });
        }
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Par défaut
    Merci pour ton aide

  4. #4
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Août 2005
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 86
    Par défaut
    Citation Envoyé par Davhippo Voir le message
    Merci pour ton aide
    Derien Davhippo

Discussions similaires

  1. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  2. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo