Java 从JPanel处隐藏JInternalFrame

Java 从JPanel处隐藏JInternalFrame,java,swing,jpanel,jinternalframe,Java,Swing,Jpanel,Jinternalframe,我正在建造一个JPanel,它是给一个JInternalFrame的。现在我想知道,如果有人点击JInternalFrame的X按钮,它是隐藏的,而不是关闭的。问题是我必须在JPanel中实现这个函数,而我没有访问JInternalFrame的权限 这可能吗 我从JInternalFrame知道,它可以通过setDefaultCloseOperation(在关闭时隐藏)来实现但我不知道如何从JPanel中实现它。我当然搜索过了,但我没有找到任何适合我的情况 另一个问题,仅供理解:单击X按钮时发生

我正在建造一个JPanel,它是给一个JInternalFrame的。现在我想知道,如果有人点击JInternalFrame的
X
按钮,它是隐藏的,而不是关闭的。问题是我必须在JPanel中实现这个函数,而我没有访问JInternalFrame的权限

这可能吗

我从JInternalFrame知道,它可以通过
setDefaultCloseOperation(在关闭时隐藏)来实现但我不知道如何从JPanel中实现它。我当然搜索过了,但我没有找到任何适合我的情况

另一个问题,仅供理解:单击
X
按钮时发生了什么?是否调用了
dispose()
函数?我是JavaSwing新手,对它的工作原理很感兴趣

但我不知道如何从JPanel上做到这一点

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

比如:

JInternalFrame frame = (JInternalFrame)SwingUtilities.ancestorOfClass(JInternalFrame.class, thePanel);
但我不知道如何从JPanel上做到这一点

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

比如:

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

这可能吗?不,不是。是的,当用户单击“X”时调用dispose方法。这可能吗?不,不是。是的,当用户单击“X”时调用dispose方法。当我初始化面板时,它没有父容器,因此我得到一个NullPointerException。我以后不能用它,但是thanks@Ludy,这是正确的。创建组件时不应执行该代码。上面的代码在添加到面板的按钮中的
ActionListener
中执行。现在我找到了一种使用该行的方法。一个听众在为我工作。顺便说一句,我应该发布我的解决方案吗?当我初始化面板时,它没有父容器,所以我得到一个NullPointerException。我以后不能用它,但是thanks@Ludy,这是正确的。创建组件时不应执行该代码。上面的代码在添加到面板的按钮中的
ActionListener
中执行。现在我找到了一种使用该行的方法。一个听众在为我工作。顺便说一句,我应该发布我的解决方案吗?