Предположим, что мы имеем следующее приложение Swing:
final JFrame frame = new JFrame();
final JPanel outer = new JPanel();
frame.add(outer);
JComponent inner = new SomeSpecialComponent();
outer.add(inner);
Итак, в этом примере мы просто имеем внешнюю панель в кадре и специальный компонент на панели. Этот специальный компонент должен что-то делать, когда он скрыт и показан. Но проблема в том, что setVisible() вызывается на внешней панели, а не на специальном компоненте. Поэтому я не могу переопределить метод setVisible в специальном компоненте, и я также не могу использовать компонентный прослушиватель на нем. Я мог бы зарегистрировать слушателя на родительском компоненте, но что, если внешняя панель также находится на другой панели, и эта внешняя внешняя панель скрыта?
Есть ли более простое решение, чем рекурсивное добавление компонентных слушателей ко всем родительским компонентам для обнаружения изменения видимости в SomeSpecialComponent?