java - Java GUI 中的退出冲突

标签 java swing jframe dispose

我在修复我的 Java 程序中的两个 GUI 时遇到了另一个问题。假设我们有一个新的 JFrame:

public class guiOne {

public static void main (String [] agrs) {
    JFrame f = new JFrame();
    JButton b = new JButton();
    JPanel p = new JPanel();

    b.setSize(100,100);
    f.setTitle("New JFrame");
    f.setVisible(true);
    f.setSize(300,300);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    p.add(b);
    f.add(b);
}

当我单击新建按钮时,会出现一个新的 JFrame。我遇到的问题是当我添加这段代码时:

System.exit(guiOne);

所有导出。我只希望 guiOne 在我启动新的 JFrame 时立即退出。为什么它会关闭所有内容?

最佳答案

f.setVisible(true); 必须是容器构造函数中的最后一行代码

1) 永远不要创建新的 JFrame作为另一个顶级容器,使用 JDialog与父 JFrame 和/或 setModal()/ModalityTypes 如果需要

2) 不要创建一个新的Top-Level Container,只创建一次这个contaai​​ner然后用getComtentPane.removeAll()重复使用它

3) 你看过CardLayout对于简单易行的实现,更容易在屏幕上玩另一个 JFrame/JDialog

4) JTabbedPane是另一种方法如何做到这一点

关于java - Java GUI 中的退出冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9495608/

相关文章:

java - 无法删除记录

java - 如何获取时区的本地日期时间

java - 如何从 getMetaData.getColumns() 返回可滚动的结果集?

java - 当鼠标悬停在 Java/Windows 中的 JMenu 对象上时听到文本(屏幕阅读器)

java - 我的 jFrame 没有出现

JAVA相当于验证登录信息?

java - 如何通过 Super 关键字获取变量的值?

java - 我在 Swing 程序中的什么地方实现 main() 函数?

java - 遍历 JTabbedPane 中的选项卡组件

java - 搜索用另一个面板替换面板的命令