Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在for循环中设置JLabel的属性?_Java_For Loop_Jlabel - Fatal编程技术网

Java 如何在for循环中设置JLabel的属性?

Java 如何在for循环中设置JLabel的属性?,java,for-loop,jlabel,Java,For Loop,Jlabel,我有10个jLabel,分别命名为label1、label2、label3、,标签10。我想使用for循环设置标签中的文本。因此,我希望能够做到以下几点: 显然这不起作用 for(int i=1; i<=10; i++){ label+i.setText("label"+i); } 有什么办法可以做到这一点吗?我真的需要这样做,这样我就不必对所有内容进行硬编码。您需要将JLabel存储在一个数组中。即: JLabel[] labels = new JLabel[10]; // F

我有10个jLabel,分别命名为label1、label2、label3、,标签10。我想使用for循环设置标签中的文本。因此,我希望能够做到以下几点:

显然这不起作用

for(int i=1; i<=10; i++){
    label+i.setText("label"+i);
}

有什么办法可以做到这一点吗?我真的需要这样做,这样我就不必对所有内容进行硬编码。

您需要将JLabel存储在一个数组中。即:

JLabel[] labels = new JLabel[10];
// Fill that array with your JLables
for (JLabel l : labels) {
  l.setText("label"+i);
}
去掉那些标签1,标签2,标签3,label10变量;它们没有用


这种类型的循环是每个循环的一个循环;对于JLabel:标签表示数组标签的每个JLabel,l;谢谢Frakcool

在编译时,如果不知道变量的确切名称,就无法引用变量。唯一的选项是使用数组或其他集合:

JLabel label0 = new JLabel();
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
JLabel label3 = new JLabel();
JLabel label4 = new JLabel();
JLabel label5 = new JLabel();
JLabel label6 = new JLabel();
JLabel label7 = new JLabel();
JLabel label8 = new JLabel();
JLabel label9 = new JLabel();

JLabel[] label = new JLabel[] { label0, label1, label2, label3, label4, label5, label6, label7, label8, label9 };
for (int i = 0; i < 10; i++) {
    label[i].setText("label" + i);
}
为了避免键入过多和可能的打字错误,您还可以在循环中创建标签:

JLabel[] label = new JLabel[10];
for (int i = 0; i < 10; i++) {
    label[i] = new JLabel();
    label[i].setText("label" + i);
}

您仍然可以使用label[4]语法引用特定的标签。请注意,数组是从0索引的,因此标签[0]是第一个元素,标签[9]是第十个最后一个元素。

这是如何工作的?你能解释一下:做什么,这个程序在做什么吗?@LakshyaGoyal这种for循环称为a for each循环:参见。:表示打开,因此您可以将上面的示例理解为:for each JLabel onlabels@GKFX不客气;你应该在你的回答中加上我的评论:这看起来不错,但我的问题只是我实际想做的事情的简化版本。我正在试着做。设置图标。那么你的方法仍然有效吗?另外,由于我的JFrame上有10个不同的JLabel,我是否必须在循环中调用repaint和reValidate?setIcon应该像setText一样工作。若有的话,您可能希望在父组件框架或面板上调用repait和revalidate。您可以在完成所有标签的更改后执行一次。