20

How do you add custom text to the buttons of a JOptionPane.showInputDialog?

I know about this question JOptionPane showInputDialog with custom buttons, but it doesn't answer the question asked, it just references them to JavaDocs, which doesn't answer it.

Code So Far:

Object[] options1 = {"Try This Number",
                 "Choose A Random Number",
                 "Quit"};

JOptionPane.showOptionDialog(null,
                 "Enter a number between 0 and 10000",
                 "Enter a Number",
                 JOptionPane.YES_NO_CANCEL_OPTION,
                 JOptionPane.PLAIN_MESSAGE,
                 null,
                 options1,
                 null);

How I want it to look

I would like to add a text field to this.

Max von Hippel
  • 2,856
  • 3
  • 29
  • 46
ZuluDeltaNiner
  • 725
  • 2
  • 11
  • 27
  • 1
    Could you expand on your requirements a bit more. Also, what do you have so far? – Whymarrh Nov 11 '12 at 18:45
  • Referencing the javadocs (in this case at least) is the correct answer. No need to write here what others already wrote. – vainolo Nov 11 '12 at 18:50

2 Answers2

29

You can use custom component instead of a string message, for example:

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TestDialog {

    public static void main(String[] args) {
        Object[] options1 = { "Try This Number", "Choose A Random Number",
                "Quit" };

        JPanel panel = new JPanel();
        panel.add(new JLabel("Enter number between 0 and 1000"));
        JTextField textField = new JTextField(10);
        panel.add(textField);

        int result = JOptionPane.showOptionDialog(null, panel, "Enter a Number",
                JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE,
                null, options1, null);
        if (result == JOptionPane.YES_OPTION){
            JOptionPane.showMessageDialog(null, textField.getText());
        }
    }
}

enter image description here

tenorsax
  • 21,123
  • 9
  • 60
  • 107
12

Have a look at How to Make Dialogs: Customizing Button Text.

Here is an example given:

enter image description here

Object[] options = {"Yes, please",
                    "No, thanks",
                    "No eggs, no ham!"};
int n = JOptionPane.showOptionDialog(frame,//parent container of JOptionPane
    "Would you like some green eggs to go "
    + "with that ham?",
    "A Silly Question",
    JOptionPane.YES_NO_CANCEL_OPTION,
    JOptionPane.QUESTION_MESSAGE,
    null,//do not use a custom Icon
    options,//the titles of buttons
    options[2]);//default button title
trashgod
  • 203,806
  • 29
  • 246
  • 1,045
David Kroukamp
  • 36,155
  • 13
  • 81
  • 138