Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 658
Coffee_Table Avatar asked May 12 '13 19:05

Coffee_Table


2 Answers

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();
    // ...
}
like image 95
Eng.Fouad Avatar answered Nov 14 '22 22:11

Eng.Fouad


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.

like image 29
Maroun Avatar answered Nov 14 '22 20:11

Maroun