I'm trying to make something that looks like this:
As you can see, I want the labels on opposite sides of each other on the same line in the same parent container.
I tried using the GridBagLayout
, and here is my code:
JPanel cont = new JPanel();
JLabel left = new JLabel("left");
JLabel right = new JLabel("right");
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.WEST;
cont.add(left, gbc);
gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.EAST;
cont.add(right, gbc);
You can use GridBagLayout, but I find using the constraints painful and sometimes unpredictable. This is easier with GridLayout and specifying the justification of the JLabel.
Here's an example that puts two JLabels in a row as in your drawing:
JPanel labelrow = new JPanel(new GridLayout(1,2));
JLabel left = new JLabel("left side", JLabel.LEFT);
JLabel right = new JLabel("right side", JLabel.RIGHT);
You can do the same with other controls, like buttons, if you put them inside JPanels with FlowLayouts that are left and right-justified.
Here's an example showing it with buttons off to each side:
JPanel buttons = new JPanel(new GridLayout(1,2));
JPanel left = new JPanel(new FlowLayout(FlowLayout.LEFT));
JPanel right = new JPanel(new FlowLayout(FlowLayout.RIGHT));
left.add(new JButton("Left"));
right.add(new JButton("Right"));
buttons.add(left);
buttons.add(right);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.