【问题标题】:How to increment the variable names created jlabels using for loop?如何增加使用 for 循环创建的 jlabels 的变量名称?
【发布时间】:2015-12-10 07:11:04
【问题描述】:

java代码:

for (int i = 0; i < 10;++i) {
   if (i == 9){
     lbl_ichar.setText(String.valueOf(word.charAt(i)));
   }
}

此代码显示错误消息(编译时错误:找不到符号 symbol: variable class lbl_ichar) under word lbl_ichar. 但是我已经创建了变量名的 jlabels lbl_0char,lbl_1char,lbl_2char......直到lbl_9char。

我想使用名称lbl_ichar 而不是使用lbl_9char。这在java 中可能吗?有的话怎么编码?

【问题讨论】:

  • “此代码显示错误消息”是什么意思?你得到编译器错误吗?标签中的文字错误?还有什么?请详细说明,并包括实际错误(完整、完整且未经编辑)。
  • 是编译时间错误
  • 介意告诉我们哪个编译时错误?
  • 您的代码中的word 是什么?
  • 我可以保证word没有问题

标签: java loops netbeans jlabel increment


【解决方案1】:

看起来您正在尝试在运行时动态创建变量名:

JLabel lbl_1char = new JLabel();
JLabel lbl_2char = new JLabel();
// ...

for (int i = 0; i < 10; ++i) {
   lbl_ichar.setText(String.valueOf(word.charAt(i)));
   //  ^
}

这不起作用。您不能在运行时创建变量名称。改用数组:

JLabel[] lbl_char = new JLabel[10];
lbl_char[0] = new JLabel();
lbl_char[1] = new JLabel();
// ...

for (int i = 0; i < lbl_char.length; i++) {
   lbl_char[i].setText(String.valueOf(word.charAt(i)));
}

或者,更好的是,使用ArrayList,而不是使用原始数组:

List<JLabel> lbl_char = new ArrayList<>();
lbl_char.add(new JLabel());
lbl_char.add(new JLabel());
// ...

for (JLabel lbl : lbl_char) {
   lbl.setText("Whatever");
}

【讨论】:

  • 是的,使用标签数组或通过反射访问标签。
【解决方案2】:

尝试做同样的事情,

JLabel lb_char[] = new JLable[10];

然后在进入循环之后,您可以像这样引用标签,

for (int i = 0; i < 10;++i) {

     lbl_char[i].setText(String.valueOf(word.charAt(i)));
} 

【讨论】:

    【解决方案3】:

    您不能直接使用循环变量 i 的值,例如“lbl_ichar”。

    您只想在 i 值为 9 时更改该值,还是要为“lbl_9char”设置新值?

    【讨论】:

      猜你喜欢
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 2018-08-20
      • 2019-04-29
      • 1970-01-01
      • 2015-01-13
      • 2014-04-15
      • 1970-01-01
      相关资源
      最近更新 更多