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