从 JPanel 隐藏 JInternalFrame

Hide JInternalFrame from JPanel

我正在构建一个 JPanel 并将其提供给 JInternalFrame。现在我希望如果有人单击 JInternalFrame 的 X 按钮,它就会被隐藏,而不是关闭。问题是我必须在 JPanel 中实现此功能,但我无权访问 JInternalFrame。

这可能吗?

我从 JInternalFrame 知道它可以用 setDefaultCloseOperation(HIDE_ON_CLOSE); 实现,但我不知道如何从 JPanel 实现。当然,我在 SO 中进行了搜索,但没有找到适合我的情况。

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

but I don't know how to do it from the JPanel

您可以使用 SwingUtilities class 来查找父容器。

类似于:

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