I need to position a JLabel over some JButtons, vertically, like a game menu. They should all be centered. I already downloaded MigLayout, but I'm not sure how to use that, so I just want a way to position my components vertically and centered, MigLayout or not. Also, I don't want to use a IDE GUI designer.
Asked
Active
Viewed 5.1k times
19
-
2*"I don't want to use a IDE GUI designer"* +1 :) Such designers *can* increase productivity for a developer that already understands the layouts and how to combine them. Until you become proficient in core J2SE layouts (+ perhaps a 3rd party layout or 3) it is less than helpful to be trying to design a GUI while fighting the GUI designer. – Andrew Thompson Jan 21 '12 at 05:35
-
2The problem is, I already wrote all my GUI stuff by hand (except for this), and I don't want to revise it will provide a big benefit. – Jimmt Jan 21 '12 at 23:24
2 Answers
30
You might use a (single column) GridLayout
or BoxLayout
for this. See Using Layout Managers & A Visual Guide to Layout Managers for more tips, ideas and working source.

Andrew Thompson
- 168,117
- 40
- 217
- 433
-
@Jeffrey That was probably because I posted the reply before editing to add links. ;) – Andrew Thompson Jan 21 '12 at 05:32
-
BoxLayout works well for buttons, but not for JLabels...my JLabel is still aligned to the left. – Jimmt Jan 21 '12 at 23:40
-
The problem is that the JLabel extends all the way across the frame(determined by drawing a border). – Jimmt Jan 21 '12 at 23:46
-
Nevermind, I figured it out by setting the JLabel maximum size. Thanks for your answer. – Jimmt Jan 21 '12 at 23:54
11
You should use BoxLayout
. Here a basic example
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class VerticalPanel extends JPanel {
public VerticalPanel() {
super();
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
for (int i = 0; i < 10; i++) {
add(new JLabel("Label n°" + i));
}
}
}

alexandre-rousseau
- 2,321
- 26
- 33