所以我有少量对象(10个JLabel),我想根据用户输入更改文本。
标签的初始化程序如下:
private JLabel j1 = new JLabel();
private JLabel j2 = new JLabel();
private JLabel j3 = new JLabel();
...etc
并继续到10。
如何在不编写每个变量名的情况下批量更改每个JLabel的文本?
我有一个如下所示的想法,但我不知道如何通过字符串中的名称访问变量。
for(int x=1;x<=10;x++){
String d = (String) x; //this isn't what d equals, it's example.
String label = "j"+x;
label.setText(d); //I know this won't work, but this is what I want to do
}
有没有办法可以做到没有错误?
答案 0 :(得分:4)
这是使用数组存储JLabel
对象的绝佳机会:
private JLabel[] labels = new JLabel[10];
for (int i=0; i<10; i++) {
labels[i] = new JLabel();
}
/* ... */
for (int i=0; i<10; i++) {
labels[i].setText("Hello from label " + i);
}
答案 1 :(得分:3)
如果您已将JLabel
创建为JLabel j[10] = new JLabel[10]
之类的数组。然后,您可以使用for循环为每个索引创建一个实例,然后也设置文本。
for(int x=0;x<10;x++){
j[x] = new JLabel();
String d = String.valueOf(x);
String label = "j"+x;
j[x].setText(d);
}