JOptionPane的showConfirmDialog的(JoptionPane ShowCon

2019-09-17 10:35发布

我有一个Java程序。 当我运行程序时,它会给我这是我连着GUI。

当我想关闭它,它会提示了一个确认对话框。 如果我按Yes按钮,将退出使用程序System.exit()

public static void main(String args[])
{
    ButtonTest app = new ButtonTest( );
    app.addWindowListener( 
        new WindowAdapter( )
        {
            public void windowClosing (WindowEvent e)
            {
                String message = " Really Quit ? ";
                String title = "Quit";
                int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION);
                if (reply == JOptionPane.YES_OPTION)
                {
                    System.exit(0);
                }

            }
        }
    );
}

如果我不想退出的程序,我该怎么办? System.continued()

Answer 1:

You Don't need the else in this case



Answer 2:

尝试设置这样,

app.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)

将帖子

所以,你的代码会变得这样的事情,

public static void main(String args[]) {
    ButtonTest app = new ButtonTest();
    app.addWindowListener(new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
            int reply = JOptionPane.showConfirmDialog(null,
                    "Really Quit ?", "Quit", JOptionPane.YES_NO_OPTION);
            if (reply == JOptionPane.YES_OPTION)
                System.exit(0);
        }
    });
    app.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
    app.setSize(640, 480);
    app.setVisible(true);
}

[说明]

你可能会想,为什么是这样。 窗口的关闭按钮的行为JFrame ,不像Frame ,是隐藏的窗口。 因此,它会隐藏/反正关闭窗口。 但是当你指定它也必须退出程序,当用户单击yes 。 然后,除了关闭窗口,它也退出程序。 而当用户点击no ,什么也不做,但无论如何关闭窗口。 因此,你必须明确地告诉它DO_NOTHING_ON_CLOSE

[文件]

与Frame不同,一个JFrame对如何当用户试图关闭窗口应对一些概念。 默认的行为只是简单地隐藏JFrame中,当用户关闭窗口。 要更改默认的行为,可调用方法setDefaultCloseOperation(INT)。 要使JFrame的行为相同Frame实例,请使用setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE)。

参考: JFrame的文档



Answer 3:

如果你问我,我会去上YES SELECTION ,而不是突然关闭我的应用程序System.exit(0)我会选择关闭我的应用程序的亲切方式,通过使用frameObject.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)和在NO SELECTION ,我会去frameObject.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE) 这是给你的帮助一个示例程序:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ApplicationCloseExample
{   
    private void displayGUI()
    {
        final JFrame frame = new JFrame("Application Close Example");

        frame.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent we)
            {
                int result = JOptionPane.showConfirmDialog(
                                frame, "Do you want to Exit ?"
                                , "Exit Confirmation : ", JOptionPane.YES_NO_OPTION);
                if (result == JOptionPane.YES_OPTION)               
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                else if (result == JOptionPane.NO_OPTION)   
                    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
            }
        });

        frame.setSize(300, 300);
        frame.setVisible(true);
    }

    public static void main(String... args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                new ApplicationCloseExample().displayGUI();
            }
        });
    }
}


Answer 4:

如果你想程序继续运行,当你按下NO,把你的代码的其余部分中的其他块或拨打你放置你的代码的其余部分的功能。

删除else块也是,如果你不想将任何行动否按钮,因为JOptionPane.showConfirmDialog()将关闭反正一个选项。 您可以继续使用if语句后,你的代码的其余部分。

FYI-没有System.continue()。 该方案几乎不认为它自己。



Answer 5:

您可以添加else块。 如果你希望再次运行的主要方法(我认为你这样做),应该是这样的。 你应该有一些,你如果用户选择没有,无论是主要方法run方法main(null)或其他方法。

public static void main(String args[])
{
ButtonTest app = new ButtonTest( );
app.addWindowListener( 
        new WindowAdapter( )
        {
            public void windowClosing (WindowEvent e)
            {
                String message = " Really Quit ? ";
                String title = "Quit";
                int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION);
                if (reply == JOptionPane.YES_OPTION)
                {
                    System.exit(0);
                } 
                else 
                {
                  //whatever you plan on running instead here, instead of quitting,
                  //main(null) to run the main method, or put another method if you want
                }
            }
        }
    );
}


文章来源: JoptionPane ShowConfirmDialog