Прослушивание новых дочерних компонентов в Swing - PullRequest
3 голосов
/ 30 октября 2009

У меня есть особое требование, чтобы у всех дочерних элементов определенного JComponent была отключена двойная буферизация. Я могу пройти через это достаточно легко и отключить их при необходимости, но я бы хотел обнаружить добавление новых дочерних компонентов независимо от их положения в иерархии и затем отключить их.

Я посмотрел на addHierarchyChangeListener, но, похоже, он обнаруживает изменения только у родителей, а не у детей.

Может ли кто-нибудь указать мне правильный путь?

Ответы [ 2 ]

4 голосов
/ 30 октября 2009
1 голос
/ 30 октября 2009

Я думаю, что вам нужен RecursiveContainerListener, который может выполнять обычную операцию всякий раз, когда любой компонент добавляется или удаляется в данном родительском компоненте. Пожалуйста, найдите код для этого здесь (RecursiveContainerListener.java) . Это именно то, что вы хотите. Все, что вам нужно, это изменить / переопределить методы handleAdd и handleRemove, чтобы включить двойную буферизацию.

И, наконец, вы просто добавляете это к своему родителю:

parentComponent.add(new RecursiveContainerListener());

Нет необходимости явно добавлять слушателя к каждому дочернему элементу:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...