隐藏来自JPanel的JInternalFrame

隐藏来自JPanel的JInternalFrame

问题描述:

我正在构建一个JPanel并将它赋予JInternalFrame。现在我想,如果有人点击JInternalFrame的X按钮,它将被隐藏,而不是关闭。问题是我必须在JPanel中实现这个功能,并且我没有访问JInternalFrame的权限。隐藏来自JPanel的JInternalFrame

这可能吗?

我知道从JInternalFrame它可以实现与setDefaultCloseOperation(HIDE_ON_CLOSE);,但我不知道如何从JPanel做到这一点。当然,我在SO搜索,但我没有找到任何适合我的情况。

另一个问题,只是为了理解:当你点击X按钮时发生了什么?函数调用了dispose()函数吗?我是Java Swing的新手,对它的工作原理感兴趣。

+0

*这是可能的*号,难道不是吗?。是的,当用户点击“X”时调用dispose方法。 –

,但我不知道如何从JPanel的

做到这一点,您可以使用SwingUtilities类寻父容器。

喜欢的东西:

JInternalFrame frame = (JInternalFrame)SwingUtilities.ancestorOfClass(JInternalFrame.class, thePanel); 
+0

当我初始化面板时,它没有父容器,所以我得到一个NullPointerException。之后我无法使用它,但是谢谢 – Ludy

+0

@Ludy,这是正确的。创建组件时,您不应该执行该代码。上面的代码在添加到您添加到面板的按钮的'ActionListener'中执行。 – camickr

+0

现在我发现了一种如何使用你的线路的方法。 AncestorListener正在为我工​​作。顺便我应该发布我的解决方案? – Ludy