Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JOptionPane with multiple inputs on different lines

I'd like to create a JOptionPane that allows a user to select an IP address and port to connect to. It should be structured as such,

IP Address: [textfield here]

Port: [textfield here]

Cancel OK

The labels should be aligned to the left, and the textfields should be left aligned too. I can't really model the storyboard here, but basically the textfields shouldn't be misaligned, even if there is a space between the labels and the textfields.

Each label and textfield pair should be on seperate lines, and the Cancel OK buttons should be aligned to the right, below the textboxes.

Is there any way to do this in code?

like image 566
swiftcode Avatar asked May 31 '12 12:05

swiftcode


People also ask

How do you skip a line in JOptionPane?

You have to use \n to break the string in different lines.

What are the 4 JOptionPane dialog boxes?

The JOptionPane displays the dialog boxes with one of the four standard icons (question, information, warning, and error) or the custom icons specified by the user.


2 Answers

See this example that seems similar in layout.

The example

Right align

Right aligns the text in the labels, which I think looks better, using this:

labels.add(new JLabel("User Name", SwingConstants.RIGHT));

For left aligned text, change it to:

labels.add(new JLabel("User Name"));

Improvement

It is done using a nested layout, GridLayout instances in the WEST and CENTER of a BorderLayout.

It might be better done using a more powerful layout such as MigLayout or more modern J2SE layout such as BoxLayout or GroupLayout.

GroupLayout can provide the type of alignment this UI needs, while not stretching the CENTER fields to the same width (which is also fixable in a nested layout as above, but requires 2 more constraining panels). I believe the other two could do the job as well, but don't have as much experience with them.

like image 79
Andrew Thompson Avatar answered Sep 21 '22 22:09

Andrew Thompson


Create a custom dialog (jdialog) or use JOptionPane.showInputDialog, see this tutorial:

http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html

like image 34
gustavogabr Avatar answered Sep 22 '22 22:09

gustavogabr