【发布时间】:2020-07-21 11:56:34
【问题描述】:
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 执行相同的操作。因此标签 1 和 2 在定义的边界中合并,而标签 3 位于左中心。
我的问题:为什么?
在 IntelliJ IDEA 中完成。
【问题讨论】:
-
1.不要手动设置边界。这就是layout mangers 的用途。 (旁注:您为所有 3 个标签设置的边界是相同的) 2. 您将标签添加到默认使用
BorderLayout的JFrame。这个add(label1);将label1添加到 BorederLayout CENTER 位置,它只能接受一个组件,而不是 3 个。