Is there a way to create multiple input in JOptionPane.showInputDialog
instead of just one input?
Asked
Active
Viewed 1.8e+01k times
68
2 Answers
146
Yes. You know that you can put any Object
into the Object
parameter of most JOptionPane.showXXX methods
, and often that Object
happens to be a JPanel
.
In your situation, perhaps you could use a JPanel
that has several JTextFields
in it:
import javax.swing.*;
public class JOptionPaneMultiInput {
public static void main(String[] args) {
JTextField xField = new JTextField(5);
JTextField yField = new JTextField(5);
JPanel myPanel = new JPanel();
myPanel.add(new JLabel("x:"));
myPanel.add(xField);
myPanel.add(Box.createHorizontalStrut(15)); // a spacer
myPanel.add(new JLabel("y:"));
myPanel.add(yField);
int result = JOptionPane.showConfirmDialog(null, myPanel,
"Please Enter X and Y Values", JOptionPane.OK_CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
System.out.println("x value: " + xField.getText());
System.out.println("y value: " + yField.getText());
}
}
}

APerson
- 8,140
- 8
- 35
- 49

Hovercraft Full Of Eels
- 283,665
- 25
- 256
- 373
-
8+1, and I'll throw in a link to Dialog Focus (http://tips4java.wordpress.com/2010/03/14/dialog-focus/) which includes a simple class to set focus on a text field that you might find helpful. – camickr Jul 02 '11 at 15:32
-
1@Marco: Please have a look at the [Swing Tutorials](http://download.oracle.com/javase/tutorial/uiswing/components/index.html) and in particular the section on [JPanels](http://download.oracle.com/javase/tutorial/uiswing/components/panel.html) – Hovercraft Full Of Eels Jul 04 '11 at 10:07
-
1How can i add the label one below another? I created a vertical strut but didt't work. Nice solution btw. – Kostas Thanasis Mar 24 '20 at 15:54
-
2@KostasThanasis: use the right layout manager for the JPanel holding the JLabels. A `new GridLayout(0, 1)` could work, the `0, 1` standing for variable number of rows `0`, and 1 column, `1`. – Hovercraft Full Of Eels Mar 24 '20 at 17:38
38
this is my solution
JTextField username = new JTextField();
JTextField password = new JPasswordField();
Object[] message = {
"Username:", username,
"Password:", password
};
int option = JOptionPane.showConfirmDialog(null, message, "Login", JOptionPane.OK_CANCEL_OPTION);
if (option == JOptionPane.OK_OPTION) {
if (username.getText().equals("h") && password.getText().equals("h")) {
System.out.println("Login successful");
} else {
System.out.println("login failed");
}
} else {
System.out.println("Login canceled");
}

smidhonza
- 493
- 4
- 8