2012-02-10 12 views
3

Java APIを読みましたが、これを行う方法について頭や尾をつくることはできません。私は信じています。私はActionListenerに、 '本当に終了しますか?'というテキストのメッセージボックスを表示させ、選択したボタンに応じてプログラムを終了するかどうかをyesとnoのオプションで指定します。Java - YesとNoオプションのJOptionPaneを追加する方法

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

どのように適切に私の要件を満たすためにそれを変更することができます:ここで

は、私がメッセージボックスにそれを破るために開始する前に、私はActionListenerのために持っている何ですか?

+0

(http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html)[ダイアログ作り方]:0私はあなたのActionListener内部にこのような何かをしたいと思います。 * QED *。 – mre

+0

JOptionPane.showConfirmDialogを試しましたか? –

答えて

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

これを試してみてください。..

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

それははいの場合は0を返し、ノー

2

ための1あなたが本当にやりたいん何をクリアしていない、多分

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

ますenter image description here

+0

IIRCの場合、表示するダイアログには '.show()'などが必要です。 – ArtB

+0

@nidhin:右上のRED Xボタンでこれを閉じることはできませんか?いい例ですが、それは+1ですが、あなたはちょうどその部分を示す方法を忘れました。 –

関連する問題