JAVA AWT 如何通过按下按钮关闭对话框

标签 java swing awt modal-dialog windowlistener

我有一个 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 中使用相同的方法,但我不知道如何获取窗口对象。

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

非常感谢您的帮助。

最佳答案

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

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

在这里很重要。 我试图通过从事件等中获取父对象以某种方式获取窗口对象。在 WindowClosing 的情况下,我确实可以通过这种方式获取窗口对象引用,但在按钮的情况下它不起作用......然后我意识到我可以只需引用this。 Internet 中的大多数示例调用 System.Exit(0),但恕我直言,调用 System.Exit(0) 在示例的情况下ONLY 可能没问题,而不是在实际应用中。

关于JAVA AWT 如何通过按下按钮关闭对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11236133/

相关文章:

java - 如何在Spring boot中设置WebSSOProfileConsumerImpl中的responseSkew属性值

java - 将大数据流式传输到 Apache Nifi 中的流文件,无需 OOM

JavaFx 与 Swing 图像可视化

java - 从文本文件读取数组中的图像和字符串

Java awt.canvas 在 JScrollPane 内部时不会被剪裁

java - 未检测到 MouseListener

javascript - undertow 路径模板和资源处理程序

java - 线程通知问题

java - Java 6 中鼠标的 KeyStroke 等效类?

java - JTable 不会显示