Search code examples
javaswingjoptionpane

Java: Custom Buttons in showInputDialog


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.


Solution

  • 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