Java — как добавить JOptionPane для параметров «Да» и «Нет»

Итак, я прочитал Java API, но до сих пор не могу понять, как это сделать. И поверьте мне, я пытался. Я хочу, чтобы ActionListener вызывал окно сообщения с текстом «Вы действительно хотите выйти?» с вариантами «да» и «нет», которые выходят из программы или нет в зависимости от выбранной кнопки.

Вот что у меня есть для ActionListener до того, как я начал ломать его с помощью окна сообщения:

exitItem.addActionListener(
                new ActionListener() {
                    public void actionPerformed(ActionEvent arg0) {
                        window.dispose();
                    }
                }
                );

Как я могу соответствующим образом изменить его, чтобы он соответствовал моим требованиям?


person mino    schedule 10.02.2012    source источник
comment
Как создавать диалоги. КЭД.   -  person mre    schedule 10.02.2012
comment
Вы пробовали JOptionPane.showConfirmDialog?   -  person Shashank Kadne    schedule 10.02.2012


Ответы (4)


Я думаю, вы хотите сделать что-то подобное внутри своего ActionListener:

int selectedOption = JOptionPane.showConfirmDialog(null, 
                                  "Do you wanna close the window?", 
                                  "Choose", 
                                  JOptionPane.YES_NO_OPTION); 
if (selectedOption == JOptionPane.YES_OPTION) {
    window.dispose();
}
person stdll    schedule 10.02.2012

final JOptionPane optionPane = new JOptionPane(
"The only way to close this dialog is by\n"
+ "pressing one of the following buttons.\n"
+ "Do you understand?",
JOptionPane.QUESTION_MESSAGE,
JOptionPane.YES_NO_OPTION);

введите здесь описание изображения

person nidhin    schedule 10.02.2012
comment
IIRC, вам понадобится .show() или что-то еще для отображения диалога. - person Sled; 10.02.2012
comment
@nidhin: Почему вы не можете закрыть это с помощью КРАСНОЙ кнопки X в правом верхнем углу? Хороший пример, хотя +1 за это, вы просто забыли, как показать его часть. - person nIcE cOw; 10.02.2012

не ясно, что вы действительно хотите сделать, может быть

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

public class ClosingFrame extends JFrame {

    private JMenuBar MenuBar = new JMenuBar();
    private JFrame frame = new JFrame();
    private static final long serialVersionUID = 1L;
    private JMenu File = new JMenu("File");
    private JMenuItem Exit = new JMenuItem("Exit");
    private JFrame frame1 = new JFrame();

    public ClosingFrame() {
        File.add(Exit);
        MenuBar.add(File);
        Exit.addActionListener(new ExitListener());
        WindowListener exitListener = new WindowAdapter() {

            @Override
            public void windowClosing(WindowEvent e) {
                int confirm = JOptionPane.showOptionDialog(frame,
                        "Are You Sure to Close this Application?",
                        "Exit Confirmation", JOptionPane.YES_NO_OPTION,
                        JOptionPane.QUESTION_MESSAGE, null, null, null);
                if (confirm == JOptionPane.YES_OPTION) {
                    System.exit(1);
                }
            }
        };
        frame.addWindowListener(exitListener);
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frame.setJMenuBar(MenuBar);
        frame.setPreferredSize(new Dimension(400, 300));
        frame.setLocation(100, 100);
        frame.pack();
        frame.setVisible(true);

        frame1.addWindowListener(exitListener);
        frame1.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frame1.setPreferredSize(new Dimension(400, 300));
        frame1.setLocation(500, 100);
        frame1.pack();
        frame1.setVisible(true);
    }

    private class ExitListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            int confirm = JOptionPane.showOptionDialog(frame,
                    "Are You Sure to Close this Application?",
                    "Exit Confirmation", JOptionPane.YES_NO_OPTION,
                    JOptionPane.QUESTION_MESSAGE, null, null, null);
            JOptionPane.showMessageDialog(null, "Whatever", "Whatever",
                    JOptionPane.ERROR_MESSAGE);
            int confirm1 = JOptionPane.showOptionDialog(frame1,
                    "Are You Sure to Close this Application?",
                    "Exit Confirmation", JOptionPane.YES_NO_OPTION,
                    JOptionPane.QUESTION_MESSAGE, null, null, null);
            if (confirm == JOptionPane.YES_OPTION) {
                System.exit(1);
            }
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                ClosingFrame cf = new ClosingFrame();
            }
        });
    }
}
person mKorbel    schedule 10.02.2012

Попробуй это..

  JOptionPane.showConfirmDialog(null, "Do you", "Message", 
                                JOptionPane.YES_NO_OPTION);

Он вернет 0 для Да и 1 для Нет

person Shashank Kadne    schedule 10.02.2012