public class Window extends JFrame {
public Window() {
super("Whatever Window idk");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 300);
setLocationRelativeTo(null);
setVisible(true);
JLabel label1 = new JLabel();
label1.setText("label1");
label1.setBounds(40, 20, 100, 30);
JLabel label2 = new JLabel();
label2.setText("label2");
label2.setBounds(40, 20, 100, 30);
JLabel label3 = new JLabel();
label3.setText("label3");
label3.setBounds(40, 20, 100, 30);
add(label1);
add(label2);
add(label3);
}
public static void main(final String[] args) {
new Window();
}
我用给定的边界构造了label1
。这些界限应将我的标签放在窗口中心的左上角。
情况并非如此,因为标签被放置在窗口的左中心。
然后,在更改边界后不起作用,我创建了具有相同边界的label2
,以检查行是否会“合并”或其他内容。事实证明,添加标签2会将标签1推入正确的位置(如setBounds()
中所定义),并将标签2代替其放置在最左侧的中心位置。
现在,添加具有完全相同边界的标签3与标签2具有相同的作用。因此,在将标签3置于左中位置时,标签1和2将在定义的边界内合并。
我的问题:为什么?
在IntelliJ IDEA中完成。
答案 0 :(得分:0)
您有2个选择
1)将帧内容窗格设置为具有空布局的面板
setContentPane(new JPanel(null));
2)将现有的内容窗格布局设置为null
getContentPane().setLayout(null);
在您调用了super()方法后添加这两行中的任意一行