【发布时间】:2010-04-28 08:31:03
【问题描述】:
假设我们有以下 Swing 应用程序:
final JFrame frame = new JFrame();
final JPanel outer = new JPanel();
frame.add(outer);
JComponent inner = new SomeSpecialComponent();
outer.add(inner);
所以在这个例子中,我们只是在框架中有一个外部面板,在面板中有一个特殊组件。这个特殊的组件在隐藏和显示时必须做一些事情。但问题是 setVisible() 是在外部面板上调用的,而不是在特殊组件上调用的。所以我不能覆盖特殊组件中的 setVisible 方法,也不能在它上面使用组件监听器。我可以在父组件上注册监听器,但是如果外面板也在另一个面板中并且这个外面板被隐藏了怎么办?
有没有比递归地向所有父组件添加组件侦听器以检测 SomeSpecialComponent 中的可见性变化更简单的解决方案?
【问题讨论】: