jsp*_*cek 2 swing jpanel windowlistener
我正在处理一些奇怪的遗留代码。他们有一个实现 JPanel 的自定义对象。此JPanel对象是主应用程序中的辅助弹出屏幕。我遇到的问题是检测辅助弹出屏幕何时关闭。
我尝试WindowListener为该类实现 a ,但是当我尝试添加它时,没有JFrame与此对象关联。我假设这是因为他们使用的是自定义对象,并且它是一个嵌入式弹出屏幕。
我试图检索一个JFrame使用:
JFrame parentFrame = (JFrame) SwingUtilities.getWindowAncestor(this);
Run Code Online (Sandbox Code Playgroud)
在NullPointerException. 我不知道为什么在此页面上很难检测到右上角的“x”关闭按钮!我应该提到他们能够将鼠标和键侦听器添加到嵌入在JPanel. 但是整个窗口的外部侦听器给我带来了麻烦。
(请耐心等待,这是我的第一个 stackoverflow 帖子,我是 Swing 的新手。)
非常感谢!!
尝试为那个奇怪的面板调用getParent()。它应该返回父 GUI 组件。如果这仍然不是您的框架而是一些中间面板,请在其上调用 getParent() 。顶级组件返回 null。
Component p = strangePanel;
while ( p != null && ! (p instanceof Window))
p = p.getParent();
((Window) p ).addWindowListener(..);
Run Code Online (Sandbox Code Playgroud)