单击按钮关闭 JFrame [重复]

Posted

技术标签:

【中文标题】单击按钮关闭 JFrame [重复]【英文标题】:Closing JFrame with button click [duplicate] 【发布时间】:2011-01-22 02:28:36 【问题描述】:

我有 JFrame 的 jButton1 私有成员,我想在单击按钮时关闭框架。

jButton1.addActionListener(new ActionListener() 
    public void actionPerformed(ActionEvent e)
    
    
);

我想做super.close(),但找不到超级的关闭。有没有办法引用JFrame

【问题讨论】:

【参考方案1】:

您需要对要关闭的特定框架的引用,但假设您有引用 dispose() 应该关闭该框架。

jButton1.addActionListener(new ActionListener() 
    public void actionPerformed(ActionEvent e)
    
       frameToClose.dispose();
    
);

【讨论】:

虽然这是真的,但是当你这样做时,你会跳过所有与关闭事件相关的 EventListeners... 如何处理这个(当前)JFrame??? 如果我只想关闭框架而不是终止事件怎么办?【参考方案2】:
JButton b3 = new JButton("CLOSE");

b3.setBounds(50, 375, 250, 50);

b3.addActionListener(new ActionListener() 
    public void actionPerformed(ActionEvent e)
    
        System.exit(0);
    
);

【讨论】:

非常适合单窗口应用程序,但是如果您使用它来关闭单个窗口,它也会关闭所有其他窗口... @acp 我只想关闭同一个类而不是 java swing 中的前一个类 System.exit(0);方法正在工作..还有 dispose();方法也不错。 我不认为使用 System::exit 是个好主意,因为调用 System.exit() 会关闭整个 JVM。【参考方案3】:

在我看来,您有两个问题。一个是JFrame没有close方法,其他答案中已经解决了。

另一个是您在引用 JFrame 时遇到问题。在actionPerformed 中,super 指的是 ActionListener。要在此处引用 JFrame 实例,请改用 MyExtendedJFrame.super(您也应该能够使用 MyExtendedJFrame.this,因为我认为您没有理由要覆盖 disposesetVisible 的行为)。

【讨论】:

【参考方案4】:

你可以使用 super.dispose() 方法,它更类似于关闭操作。

【讨论】:

感谢您提供帮助 :-) 不幸的是,您的回答并没有增加太多有用,甚至是错误的(听众的超级没有处置,无需调用框架的超级,有关完整详细信息,请参阅@lins314159)【参考方案5】:

你猫使用JFrame的setVisible ()方法(并将可见性设置为false)或dispose ()方法,它更类似于close操作。

【讨论】:

setVisible() 方法对我不起作用。我还认为我可以通过设置可见性 = false 来关闭应用程序...我使用了 System.out(0);方法。它有效.. dispose() 方法也有效。

以上是关于单击按钮关闭 JFrame [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何捕获JFrame的关闭按钮单击事件?

单击JFrame上的退出按钮需要关闭JFrame

groovy关闭JFrame窗口的方式与用户单击xclose窗口按钮的方式相同

如何在打开另一个JFrame时关闭JFrame? [重复]

java中,swing设计中,为啥JOptionPane.showmessageDialog()弹出对话框后,单击确定按钮能关闭窗口?

Java - 关闭 JFrame 窗口时的消息