【问题标题】:How do I parse a string to an object's name?如何将字符串解析为对象的名称?
【发布时间】:2012-05-17 01:19:02
【问题描述】:

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

有什么方法可以做到不出错吗?

【问题讨论】:

    标签: java string parsing variables


    【解决方案1】:

    这是使用数组存储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);
    }
    

    【讨论】:

    • 如果你事先不知道标签的数量,还有一个ArrayList
    【解决方案2】:

    如果您已将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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 1970-01-01
      • 2023-03-28
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多