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

JAVA AWT如何通过按下按钮关闭对话框,java,swing,awt,modal-dialog,windowlistener,Java,Swing,Awt,Modal Dialog,Windowlistener,我有一个AWT模态对话框 public class d extends java.awt.Dialog {... 在对话框框架上,使用netbeans gui设计器,我先放置对话框,然后放置面板,再放置按钮。 我正试图通过按下按钮来关闭对话框。 我对系统不感兴趣。退出(0) netbeans生成器已创建 private void jButtonCloseActionPerformed(java.awt.event.ActionEvent evt){ 我想我应该在这个函数中调用dispose

我有一个AWT模态对话框

public class d extends java.awt.Dialog {...
在对话框框架上,使用netbeans gui设计器,我先放置对话框,然后放置面板,再放置按钮。 我正试图通过按下按钮来关闭对话框。 我对系统不感兴趣。退出(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();
这在这里很重要。 我试图通过从事件中获取父对象等方式获取窗口对象。在窗口关闭的情况下,我确实可以通过这种方式获取窗口对象引用,但在按钮的情况下,它不起作用。。。然后我意识到我可以简单地引用这个。 Internet呼叫系统中的大多数示例。退出(0)但IMHO呼叫系统。退出(0)可能仅适用于示例,而不适用于实际应用程序。

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

Window window = SwingUtilities.getWindowAncestor(this);
window.dispose();
这在这里很重要。 我试图通过从事件中获取父对象等方式获取窗口对象。在窗口关闭的情况下,我确实可以通过这种方式获取窗口对象引用,但在按钮的情况下,它不起作用。。。然后我意识到我可以简单地引用这个。
Internet呼叫系统中的大多数示例。退出(0)但IMHO呼叫系统。退出(0)仅适用于示例的情况,而不适用于实际应用。

什么“对话线程”?出于无聊的好奇——为什么是AWT应用程序而不是Swing应用程序?我是Java新手,所以无意中使用了错误的分类。我之所以称之为AWT,是因为这个对话框扩展了java.AWT.dialog。。。但也许是秋千,我真的不知道。请不要认为我无知,但我真的不知道。。。Java不是我每天做编程的语言,只是需要将web应用程序的一些任务委托给Java小程序。。。在这种情况下,这是一个永远不会结束的过程。在netbeans中,当我运行该应用程序时,在应用程序结束(或到达main中的最后一行)后,我仍然可以在netbeanside的底部看到“(runsingle)running”,我称之为running thread。完成此操作的唯一方法是按下输出窗口中的停止按钮。我认为它是对话框窗口的线程。是的,如果它是java.awt.dialog,那么它就是awt组件。一句忠告:不要。仅使用Swing组件,除非您有很好的理由不这样做,而且您没有这样做。???这种说法毫无意义。为什么您认为使用Swing组件会比AWT占用更多的空间?是否要使用已过期15年的GUI库?秋千在牙齿中也越来越长,但它比AWT灵活和强大得多。您的陈述表明您可以从阅读一些JavaGUI教程中获益。你不会后悔的。什么“对话线程”?出于无聊的好奇——为什么是AWT应用程序而不是Swing应用程序?我是Java新手,所以无意中使用了错误的分类。我之所以称之为AWT,是因为这个对话框扩展了java.AWT.dialog。。。但也许是秋千,我真的不知道。请不要认为我无知,但我真的不知道。。。Java不是我每天做编程的语言,只是需要将web应用程序的一些任务委托给Java小程序。。。在这种情况下,这是一个永远不会结束的过程。在netbeans中,当我运行该应用程序时,在应用程序结束(或到达main中的最后一行)后,我仍然可以在netbeanside的底部看到“(runsingle)running”,我称之为running thread。完成此操作的唯一方法是按下输出窗口中的停止按钮。我认为它是对话框窗口的线程。是的,如果它是java.awt.dialog,那么它就是awt组件。一句忠告:不要。仅使用Swing组件,除非您有很好的理由不这样做,而且您没有这样做。???这种说法毫无意义。为什么您认为使用Swing组件会比AWT占用更多的空间?是否要使用已过期15年的GUI库?秋千在牙齿中也越来越长,但它比AWT灵活和强大得多。您的陈述表明您可以从阅读一些JavaGUI教程中获益。你不会后悔这样做。
SwingUtilities
祝贺你在一定程度上遵循了@Hovercraft的建议。现在转到使用Swing组件,并获得一个更好的组件工具包,人们可以从最近的使用中真正记住它
SwingUtilities
祝贺您遵守@Hovercraft的部分建议。现在转到使用Swing组件,并获得一个更好的组件工具包,人们可以从最近的使用中真正记住它!