Coffee_Table
Coffee_Table

Reputation: 284

Is there a way to only have the OK button in a JOptionPane showInputDialog (and no CANCEL button)?

I've seen that this is possible in other types of dialog windows such as "showConfirmDialog", where one can specify the amount of buttons and their names; but is this same functionality achievable when using "showInputDialog"? I couldn't seem to find this type of thing in the API. Perhaps I just missed it, but any help is appreciated.

Upvotes: 6

Views: 28987

Answers (3)

Eng.Fouad
Eng.Fouad

Reputation: 117569

Just add a custom JPanel as a message to JOptionPane.showOptionDialog():

enter image description here

String[] options = {"OK"};
JPanel panel = new JPanel();
JLabel lbl = new JLabel("Enter Your name: ");
JTextField txt = new JTextField(10);
panel.add(lbl);
panel.add(txt);
int selectedOption = JOptionPane.showOptionDialog(null, panel, "The Title", JOptionPane.NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options , options[0]);

if(selectedOption == 0)
{
    String text = txt.getText();
    // ...
}

Upvotes: 16

Maroun
Maroun

Reputation: 95948

JOptionPane.showInputDialog() returns the string the user has entered if the user clicks "OK" and returns null otherwise. See this:

Returns: user's input, or null meaning the user canceled the input

You can't do this using showInputDialog()

However, you can use JOptionPane#showOptionDialog():

Object[] buttons = {"OK"};
int res = JOptionPane.showOptionDialog(yourFrame,
                   "YourMessage","YourTitle",
                   JOptionPane....,
                   JOptionPane..., null, buttons , buttons[0]);

As @HovercraftFullOfEels stated on the comments, you can add JTextField to the dialog and achieve this.

Upvotes: 4

Joan
Joan

Reputation: 426

Try:

JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.");

I found in here

Upvotes: 1

Related Questions