9

I need to make a custom dialog with 4 options but as far as I can tell you can only have one with three options. Here is how I would make an option pane with 3 options:

        Frame refFrame = DialogUtils.getReferenceFrame();

        ///TODO:
        /// - Use DialogUtils
        int option = JOptionPane.showOptionDialog(refFrame,
            msg,
            rsc.str("918"),
            JOptionPane.YES_NO_CANCEL_OPTION,
            JOptionPane.INFORMATION_MESSAGE,
            DialogUtils.INFO_ICON,
            options,
            options[0]);

But I could not find some sort of open ended substitution for YES_NO_CANCEL_OPTION. Is there a way to make the JOptionPane allow four choices?

Jonathan Holloway
  • 62,090
  • 32
  • 125
  • 150
Mike2012
  • 7,629
  • 15
  • 84
  • 135

2 Answers2

17

You can use any of the JOptionPane's option constants, you just need to supply a options array of size 4:

public static void main(String[] args) {
    String[] options = new String[] {"Yes", "No", "Maybe", "Cancel"};
    int response = JOptionPane.showOptionDialog(null, "Message", "Title",
        JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE,
        null, options, options[0]);

    // Where response == 0 for Yes, 1 for No, 2 for Maybe and -1 or 3 for Escape/Cancel.
}
javajon
  • 1,660
  • 16
  • 18
Peter
  • 8,545
  • 1
  • 27
  • 24
  • funny I went here just because I was having problems with JOptionPane not displaying the output. but when I investigate your post, it reminds me that Java allows posting variables after the "Message" in JOptionPane such as \"Message" + tempConvValue,\ thanks for the wisdom. solves my hardship. google search is funny too haha. – Rfqkml Jan 20 '22 at 10:00
1

Simply use an options array of size 4 instead of 3...

Michael Borgwardt
  • 342,105
  • 78
  • 482
  • 720