【问题标题】:Java - How to add a JOptionPane for Yes and No optionsJava - 如何为 Yes 和 No 选项添加 JOptionPane
【发布时间】:2012-03-02 23:12:52
【问题描述】:

所以,我已经阅读了 Java API,但似乎仍然无法对如何做到这一点做出正面或反面。相信我,我已经尝试过了。我想要一个 ActionListener 产生一个带有文本“你真的要退出吗?”的消息框,其中包含选项 yes 和 no 退出程序或不退出程序,具体取决于所选按钮。

在我开始使用消息框破坏 ActionListener 之前,这是我所拥有的:

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

我怎样才能适当地改变它以满足我的要求?

【问题讨论】:

标签: java swing actionlistener joptionpane


【解决方案1】:

试试这个..

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

返回 0 表示是,返回 1 表示否

【讨论】:

    【解决方案2】:

    我想你想在你的 ActionListener 中做这样的事情:

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

    【讨论】:

      【解决方案3】:
      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);
      

      【讨论】:

      • IIRC,你需要.show() 或其他东西才能显示对话。
      • @nidhin:为什么不能用右上角的红色 X 按钮关闭它?很好的例子虽然 +1,但你只是忘记了如何展示它。
      【解决方案4】:

      不清楚你真正想做什么,也许

      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();
                  }
              });
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2012-01-31
        • 2012-12-18
        • 2013-03-07
        • 2012-08-31
        • 2018-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-23
        相关资源
        最近更新 更多