java - JMenuItem退出不退出

标签 java swing user-interface

我有简单的Java GUI ,单击菜单"file"上的 JMenuItem“退出”不会退出 GUI。我想在用户关闭 GUI 之前设置“确认警告窗口”。到目前为止我已经尝试过,请给我指示;谢谢。

代码:

private void initialize() {
        frmScms = new JFrame();
        frmScms.setTitle("SCMS");
        frmScms.setBounds(100, 100, 1080, 684);
        frmScms.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmScms.getContentPane().setLayout(null);

        JMenuBar menuBar = new JMenuBar();
        menuBar.setBounds(0, 0, 1064, 21);
        frmScms.getContentPane().add(menuBar);

        JMenu menuF = new JMenu("File");
        menuF.add("New");
        menuF.add("Open");
        menuF.add("Save");
        JMenuItem exit = new JMenuItem("Exit");
        menuF.add(exit);

        JMenu menuS = new JMenu("Edit");
        menuS.add("Cut");
        menuS.add("Copy");
        menuS.add("Paste");
        menuS.add("Delete");
        JMenu menuT = new JMenu("Help");
        menuT.add("Help Contents");
        menuT.add("Search");
        menuT.add("About SCMS");

        menuBar.add(menuF);
        menuBar.add(menuS);
        menuBar.add(menuT);

        class exitAction implements ActionListener{
            public void actionPerformed (ActionEvent e){
                int result = JOptionPane.showConfirmDialog(frmScms, "Are you sure you want to close the application?", "Please Confirm-?",JOptionPane.YES_NO_OPTION);
                if (result == JOptionPane.YES_OPTION)
                    frmScms.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            }
        }
        exit.addActionListener(new exitAction());

    }

另一方面;下面的代码关闭 GUI;

class exitAction implements ActionListener{
    public void actionPerformed (ActionEvent e){
        System.exit(0);
    }
}
exit.addActionListener(new exitAction());

最佳答案

当您使用setDefaultCloseOperation时,仅当用户单击窗口顶部的十字时,您的程序才会退出。这是因为 setDefaultCloseOperation() 只是告诉程序当用户尝试退出时要做什么。另一方面,System.exit(0) 强制程序立即退出。所以如果你想关闭程序,请使用System.exit(0);

干杯。

关于java - JMenuItem退出不退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28482804/

相关文章:

java - 在 Spring mvc 中使用 html 文件发送 dto

java - 如何在 JavaFX 中设置 TextField 的尺寸(特别是宽度)?

java - Mahout 和 MySQL

java - SparkJava : index. hbs FileNotFoundException

java - 带有特殊/unicode 字符的 toLowerCase 会引发异常

java - 通过 ENTER 键触发 JButton?

java - 将JFrame与变量连接

java - JTable隐藏网格线的方法

java - 在主要 Activity 显示主要内容 View 之前添加 fragment

c++ - 具有原生外观和感觉的轻量级C/C++ GUI库