Prev: JOptionPane - Simple Dialogs | Next: none

Java: JOptionPane.showOptionDialog

Here are some more useful static methods from javax.swing.JOptionPane that allow you to ask the user to indicate a choice.

ValueMethod call
response =  JOptionPane.showConfirmDialog(component, text);
response =  JOptionPane.showOptionDialog(component, message, title, optionType, messType, icon, options, initVal);

Example

  1 
  2 
  3 
  4 
  5 
  6 
  7 
  8 
  9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
 59 
 60 
 61 
 62 
 63 
 64 
 65 
 66 
 67 
// File       : joptionpane-example/JOptionPaneTest2.java
// Description: JOptionPane.showOptionDialog demonstration.
// Illustrates: showOptionDialog and switch.
// Author     : Fred Swartz, 16 Apr 2007, Placed in public domain.

import javax.swing.JOptionPane;

public class JOptionPaneTest2 {
    public static void main(String[] args) {
        //... Text to put on the buttons.
        String[]  choices = {
            "Democratic", 
            "Republican", 
            "None of your business",
            "Quit"};
        
        //... Variables to keep track of the counts.
        int democraticCount = 0;
        int republicanCount = 0;
        int noAnswerCount   = 0;
        
        //... "Infinite" loop, terminated by call to System.exit(0)
        while (true) {
            int response = JOptionPane.showOptionDialog(
                               null                       // Center in window.
                             , "How did you vote?"        // Message
                             , "Party Poll"               // Title in titlebar
                             , JOptionPane.YES_NO_OPTION  // Option type
                             , JOptionPane.PLAIN_MESSAGE  // messageType
                             , null                       // Icon (none)
                             , choices                    // Button text as above.
                             , "None of your business"    // Default button's label
                           );
            
            //... Use a switch statement to check which button was clicked.
            switch (response) {
                case 0: 
                    democraticCount++;
                    break;
                    
                case 1:
                    republicanCount++;
                    break;
                    
                case 2:
                    noAnswerCount++;
                    break;
                    
                case 3:
                case -1:
                    //... Both the quit button (3) and the close box(-1) handled here.
                    System.exit(0);
                    
                default:
                    //... If we get here, something is wrong.  Defensive programming.
                    JOptionPane.showMessageDialog(null, "Unexpected response " + response);
            }
            
            //... Display the accumulated results so far.
            JOptionPane.showMessageDialog(null, "Response = " + response
                                              + "\nDem = " + democraticCount
                                              + "\nRep = " + republicanCount
                                              + "\nOther = " + noAnswerCount);
            
        } 
    }
}

Notes

Line 11
This defines an array of strings that will be displayed as possible choices.
Line 24 produces the following:

Returns an int value identifying which of the String array of options was chosen. Note that the array element numbering starts with zero, not one.

Line 27
Simple message dialog. The value 2 indicated that the "None of your business" choice was made by the user.
Line 30
Asks a yes/no/cancel question. Returns one of these values:
  • JOptionPane.YES_OPTION
  • JOptionPane.NO_OPTION
  • JOptionPane.CANCEL_OPTION
  • JOptionPane.CLOSED_OPTION Dialog box was closed. Usually treated like CANCEL_OPTION.