Bonjour,
je voudrais recevoir un événement lorsque un des composants d'un jPanel est modifié. y a t-il un moyen simple ? (mon jPanel contient des objects de types différents checkbox, combobox, textfields, tableaux ...)
merci à tous
Yann![]()
Bonjour,
je voudrais recevoir un événement lorsque un des composants d'un jPanel est modifié. y a t-il un moyen simple ? (mon jPanel contient des objects de types différents checkbox, combobox, textfields, tableaux ...)
merci à tous
Yann![]()
Il faudrait créer une classe qui étend JPanel et qui redéfinit la méthode addImpl :
Là, il te suffira de récupérer la source de l'événement et de faire une action en fonction de la propriété modifiée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // Code non-testé !! class MonPanel extends javax.swing.JPanel implements java.beans.PropertyChangeListener { @Override protected void addImpl (java.awt.Component comp, Object constraints, int index) { super.addImpl(comp, constraints, index); comp.addPropertyChangeListener(this); } public void propertyChange (java.beans.PropertyChangeEvent evt) { ... // ton code à faire lorsqu'une propriété est modifiée. // Renseigne-toi sur la classe PropertyChangeEvent dans la javadoc. } }
Si tu ne veux écouter que quelques changements de propriété, il te suffit de remplacer comp.addPropertyChangeListener(this); par comp.addPropertyChangeListener("maPropriété",this);
Certaines propriétés ne sont pas prises en compte (notamment la taille d'un composant). La liste des propriétés dépend en outre du type d'objet (un bouton n'aura pas de selected, tandis qu'une checkbox oui) ... Enfin, renseigne-toi
Par contre, pour écouter le changement de contenu de tableau, c'est plus coton. Là, je te conseille d'être plus précis ou de bien te renseigner afin d'utiliser tous les écouteurs comme il le faut.
Partager