2

我有一个 AWT 模式对话框

public class d extends java.awt.Dialog {...

在对话框框架上,使用 netbeans gui 设计器我将对话框然后面板然后按钮。我试图通过按下按钮关闭对话框。我对 System.exit(0) 不感兴趣。

创建的 netbeans 生成器

private void jButtonCloseActionPerformed(java.awt.event.ActionEvent evt){ 

我认为我应该在该函数中调用 dispose,但是当调用它时,它会释放对话框,但对话线程永远不会结束。

当窗口默认关闭时,我有以下处理程序工作对话框关闭按钮


     dialog.addWindowListener(new java.awt.event.WindowAdapter() {
       @Override
        public void windowClosing(java.awt.event.WindowEvent e) {
           Window window = SwingUtilities.getWindowAncestor(e.getComponent());
           window.dispose();
        }
     });
    

以上工作正常,即线程结束。

我可以在 jButtonCloseActionPerformed 中使用相同的方法,但我不知道如何获取窗口对象。

我怎样才能做到这一点?任何其他好的解决方案也非常受欢迎。

我将非常感谢您的帮助。

4

1 回答 1

0

我认为最好的答案(简而言之)是使用以下代码

Window window = SwingUtilities.getWindowAncestor(this);
window.dispose();

在这里很重要。我试图通过从事件等中获取父对象来以某种方式获取窗口对象。在 WindowClosing 的情况下,我确实可以以这种方式获取窗口对象引用,但如果是按钮,它不起作用......然后我意识到我可以简单参考这个。互联网上的大多数示例调用 System.Exit(0) 但恕我直言,调用 System.Exit(0)在示例的情况下是可以的,而不是在实际应用程序中。

于 2012-06-28T12:18:30.963 回答