如何在for循环中设置JLabel的属性?

时间:2016-08-14 15:52:34

标签: java for-loop jlabel

我有10个JLabel,名为label1,label2,label3,...,label10。我想使用for循环在标签中设置文本。所以我想要做的就是以下几点:

显然这不起作用。

for(int i=1; i<=10; i++){
    label+i.setText("label"+i);
}

有没有办法真正做到这一点?我真的需要这样做,这样我就不需要对所有内容进行硬编码。

2 个答案:

答案 0 :(得分:4)

您需要将JLabel存储在一个数组中。那就是:

JLabel[] labels = new JLabel[10];
// Fill that array with your JLables
for (JLabel l : labels) {
  l.setText("label"+i);
}

摆脱那些label1,label2,label3,...,label10变量;它们没用。

这种类型的循环是for-each循环; for (JLabel l : labels)表示“对于数组l的每个JLabel labels”; documentation here. (感谢Frakcool!)

答案 1 :(得分:4)

在编译时如果不知道其确切名称,就无法引用变量。唯一的选择是使用数组(或其他一些集合):

JLabel label0 = new JLabel();
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
JLabel label3 = new JLabel();
JLabel label4 = new JLabel();
JLabel label5 = new JLabel();
JLabel label6 = new JLabel();
JLabel label7 = new JLabel();
JLabel label8 = new JLabel();
JLabel label9 = new JLabel();

JLabel[] label = new JLabel[] { label0, label1, label2, label3, label4, label5, label6, label7, label8, label9 };
for (int i = 0; i < 10; i++) {
    label[i].setText("label" + i);
}

为避免输入这么多(以及可能的拼写错误),您也可以在循环中创建标签:

JLabel[] label = new JLabel[10];
for (int i = 0; i < 10; i++) {
    label[i] = new JLabel();
    label[i].setText("label" + i);
}

您仍然可以使用label[4]语法引用特定标签。请注意,数组的索引是0,因此label[0]是第一个元素,label[9]是第10个(最后一个)元素。