2009-10-30 5 views
3

J'ai un besoin spécifique que tous les enfants d'un composant JComponent particulier aient la double mise en mémoire tampon désactivée. Je peux y revenir assez facilement et les désactiver si nécessaire, mais je voudrais détecter l'ajout de nouveaux composants enfants, quelle que soit leur position dans la hiérarchie, et les désactiver ensuite.Écoute de nouveaux composants enfants dans Swing

J'ai examiné à addHierarchyChangeListener mais il semble que détecter les changements chez les parents, pas d'enfants.

Quelqu'un peut-il m'indiquer le bon chemin?

Répondre

1

Je pense que vous avez besoin d'une RecursiveContainerListener qui pourrait exécuter une opération commune chaque fois qu'une pièce ajoutée ou supprimée dans un composant parent donné. Veuillez trouver le code here(RecursiveContainerListener.java). Il fait exactement ce que vous voulez. Tout ce dont vous avez besoin est de changer/remplacer les méthodes handleAdd et handleRemove pour désactiver la double mise en mémoire tampon.

Et enfin, vous ajoutez simplement à votre parent:

parentComponent.add(new RecursiveContainerListener()); 

Pas besoin d'ajouter explicitement l'auditeur à chaque enfant :)

+0

Um, RecursiveContainerListener ne supporte pas ce constructeur, et finalement, il ajoute un ContainerListener à tous les composants. Bien que ce soit un peu intéressant de code. –

+0

Vous devez le modifier un peu pour répondre à vos besoins. Vous pouvez supprimer complètement le constructeur et l'écouteur de champ de membre et conserver tous les autres éléments identiques. Et enfin remplacer les méthodes handleAdd/handleRemove :) De toute façon l'intention était de donner une autre approche de faire chose. –

Questions connexes