擦除标签约束

时间:2018-12-13 02:05:23

标签: java constraints jlabel

我命名了一个自定义Label MyLabel,它的工作有些奇怪。 MyLabel是一个Label,它只是扩展了JLabel。

public class MyLabel extends JLabel {
    public MyLabel() {
        // TODO Auto-generated constructor stub
    }

    public MyLabel(String arg0) {
        super(arg0);
        // TODO Auto-generated constructor stub
    }

    public MyLabel(Icon arg0) {
        super(arg0);
        // TODO Auto-generated constructor stub
    }

    public MyLabel(String arg0, int arg1) {
        super(arg0, arg1);
        // TODO Auto-generated constructor stub
    }

    public MyLabel(Icon arg0, int arg1) {
        super(arg0, arg1);
        // TODO Auto-generated constructor stub
}

    public MyLabel(String arg0, Icon arg1, int arg2) {
        super(arg0, arg1, arg2);
        // TODO Auto-generated constructor stub
    }
}

如您所见,没有添加任何内容。但是,这很奇怪。每当我添加MyLabel类Label时,我添加的最后一个都会获得约束,尽管我没有添加!

下面是我如何在Contentpane上添加标签。

MyLabel label0_1 = new MyLabel("");
MyLabel label0_2 = new MyLabel("");
MyLabel label0_3 = new MyLabel("");
MyLabel label0_4 = new MyLabel("");
MyLabel label0_0 = new MyLabel("");
MyLabel label1_1 = new MyLabel("");
MyLabel label1_2 = new MyLabel("");
MyLabel label1_3 = new MyLabel("");
MyLabel label1_4 = new MyLabel("");
MyLabel label1_0 = new MyLabel("");
MyLabel label2_1 = new MyLabel("");
MyLabel label2_2 = new MyLabel("");
MyLabel label2_3 = new MyLabel("");
MyLabel label2_4 = new MyLabel("");
MyLabel label2_0 = new MyLabel("");
MyLabel label3_1 = new MyLabel("");
MyLabel label3_2 = new MyLabel("");
MyLabel label3_3 = new MyLabel("");
MyLabel label3_4 = new MyLabel("");
MyLabel label3_0 = new MyLabel("");
MyLabel label4_1 = new MyLabel("");
MyLabel label4_2 = new MyLabel("");
MyLabel label4_3 = new MyLabel("");
MyLabel label4_4 = new MyLabel("");
MyLabel label4_0 = new MyLabel("");
label0_1 = new MyLabel(defaultImage);
label0_2 = new MyLabel(defaultImage);
label0_3 = new MyLabel(defaultImage);
label0_4 = new MyLabel(defaultImage);
label0_0 = new MyLabel(defaultImage);
label1_1 = new MyLabel(defaultImage);
label1_2 = new MyLabel(defaultImage);
label1_3 = new MyLabel(defaultImage);
label1_4 = new MyLabel(defaultImage);
label1_0 = new MyLabel(defaultImage);
label2_1 = new MyLabel(defaultImage);
label2_2 = new MyLabel(defaultImage);
label2_3 = new MyLabel(defaultImage);
label2_4 = new MyLabel(defaultImage);
label2_0 = new MyLabel(defaultImage);
label3_1 = new MyLabel(defaultImage);
label3_2 = new MyLabel(defaultImage);
label3_3 = new MyLabel(defaultImage);
label3_4 = new MyLabel(defaultImage);
label3_0 = new MyLabel(defaultImage);
label4_1 = new MyLabel(defaultImage);
label4_2 = new MyLabel(defaultImage);
label4_3 = new MyLabel(defaultImage);
label4_0 = new MyLabel(defaultImage);
label4_4 = new MyLabel(defaultImage);
label0_0.setBounds(120, 120, 100, 100);
label0_1.setBounds(220, 120, 100, 100);
label0_2.setBounds(320, 120, 100, 100);
label0_3.setBounds(420, 120, 100, 100);
label0_4.setBounds(520, 120, 100, 100);
label1_0.setBounds(120, 220, 100, 100);
label1_1.setBounds(220, 220, 100, 100);
label1_2.setBounds(320, 220, 100, 100);
label1_3.setBounds(420, 220, 100, 100);
label1_4.setBounds(520, 220, 100, 100);
label2_0.setBounds(120, 320, 100, 100);
label2_1.setBounds(220, 320, 100, 100);
label2_2.setBounds(320, 320, 100, 100);
label2_3.setBounds(420, 320, 100, 100);
label2_4.setBounds(520, 320, 100, 100);
label3_0.setBounds(120, 420, 100, 100);
label3_1.setBounds(220, 420, 100, 100);
label3_2.setBounds(320, 420, 100, 100);
label3_3.setBounds(420, 420, 100, 100);
label3_4.setBounds(520, 420, 100, 100);
label4_0.setBounds(120, 520, 100, 100);
label4_1.setBounds(220, 520, 100, 100);
label4_2.setBounds(320, 520, 100, 100);
label4_3.setBounds(420, 520, 100, 100);
label4_4.setBounds(520, 520, 100, 100);
frame.getContentPane().add(label0_0);
frame.getContentPane().add(label0_1);
frame.getContentPane().add(label0_2);
frame.getContentPane().add(label0_3);
frame.getContentPane().add(label0_4);
frame.getContentPane().add(label1_0);
frame.getContentPane().add(label1_1);
frame.getContentPane().add(label1_2);
frame.getContentPane().add(label1_3);
frame.getContentPane().add(label1_4);
frame.getContentPane().add(label2_0);
frame.getContentPane().add(label2_1);
frame.getContentPane().add(label2_2);
frame.getContentPane().add(label2_3);
frame.getContentPane().add(label2_4);
frame.getContentPane().add(label3_0);
frame.getContentPane().add(label3_1);
frame.getContentPane().add(label3_2);
frame.getContentPane().add(label3_3);
frame.getContentPane().add(label3_4);
frame.getContentPane().add(label4_0);
frame.getContentPane().add(label4_1);
frame.getContentPane().add(label4_2);
frame.getContentPane().add(label4_3);
frame.getContentPane().add(label4_4);

我为此添加了一些标签。现在,label4_4具有约束。当我删除label4_4时,label4_3得到了约束。当我也删除了label4_3时,label4_2收到了它!为什么会这样?

1 个答案:

答案 0 :(得分:0)

首先,您需要特别阅读Laying Out Components Within a ContainerHow to Use BorderLayout

默认情况下,*1使用JFrame。这意味着将仅管理添加到五个可用位置中的任何一个的最后一个组件(默认为BorderLayout),所有其他组件都将被忽略。

您的问题的答案很简单。

  1. 请勿使用CENTER
  2. 使用一个或多个适当的布局管理器