如何在Java swing中动态访问JLabel的值?



我得到了大约11个jlabel,名称为num1, num2....num{11}。这些Jlabel变量名具有名称的前缀。但我想从这些文本字段中获取值像这样:

(prefix + i).setText("something")

但是这给了我一个错误…有没有办法动态地setText这些标签?

我做到了…但是代码不再是DRY:' (

)
if(i == 0) {
num0.setText(data[i] + "");
if(data[i] == 0) {
num0.setText("");
}
} 
if(i == 1) {
num1.setText(data[i] + "");
if(data[i] == 0) {
num1.setText("");
}
} 
if(i == 2) {
num2.setText(data[i] + "");
if(data[i] == 0) {
num2.setText("");
}
} 
if(i == 3) {
num3.setText(data[i] + "");
if(data[i] == 0) {
num3.setText("");
}
} 
if(i == 4) {
num4.setText(data[i] + "");
if(data[i] == 0) {
num4.setText("");
}
} 
if(i == 5) {
num5.setText(data[i] + "");
if(data[i] == 0) {
num5.setText("");
}
} 
if(i == 6) {
num6.setText(data[i] + "");
if(data[i] == 0) {
num6.setText("");
}
} 
if(i == 7) {
num7.setText(data[i] + "");
if(data[i] == 0) {
num7.setText("");
}
} 
if(i == 8) {
num8.setText(data[i] + "");
if(data[i] == 0) {
num8.setText("");
}
} 
if(i == 9) {
num9.setText(data[i] + "");
if(data[i] == 0) {
num9.setText("");
}
} 
if(i == 10) {
num10.setText(data[i] + "");
if(data[i] == 0) {
num10.setText("");
}
} 
if(i == 11) {
num11.setText(data[i] + "");
if(data[i] == 0) {
num11.setText("");
}
}

将JLabels放入数组或ArrayList中,并通过索引访问它们。

ArrayList<JLabel> labels = new ArrayList<>();
labels.add(num1);
labels.add(num2);
...
int i=0;
for (JLabel label: labels) {
label.setText(data[i] + "");
if(data[i] == 0) {
label.setText("");
}
i++;
}

如果你只是想给标签添加一些内容,你可以使用

label.setText(label.getText()+"-appendix");

最新更新