2

所以我有少量对象(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
}

有什么方法可以做到这一点而不会出错?

4

2 回答 2

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);
}
于 2012-05-17T01:25:01.923 回答
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);
}
于 2012-05-17T01:25:43.923 回答