假设我们有以下的Swing应用程序:如果检测的Java Swing组件已经被隐藏
final JFrame frame = new JFrame();
final JPanel outer = new JPanel();
frame.add(outer);
JComponent inner = new SomeSpecialComponent();
outer.add(inner);
因此,在这个例子中,我们只需在框架外板,并在面板中的特殊成分。隐藏并显示时,此特殊组件必须执行某些操作。但问题在于setVisible()在外部面板上调用,而不是在特殊组件上调用。所以我不能重写特殊组件中的setVisible方法,也不能在其上使用组件侦听器。我可以在父组件上注册侦听器,但是如果外面板也在另一个面板中并且该外部外面板隐藏了,该怎么办?
是否有比向所有父组件递归添加组件侦听器以检测SomeSpecialComponent中的可见性更改更容易的解决方案?
则不会触发此事件时,父组件是隐藏的,只有在调用特殊组件本身的setVisible()方法时才触发它。正如我所说我正在寻找一个解决方案,它是EASIER然后递归地附加到所有父组件的componentListener事件。 – kayahr 2010-04-28 08:58:47
我现在看到问题了:-)新的答案即将到来... – aioobe 2010-04-28 10:46:33