Java动态标签控件

时间:2014-10-14 19:35:20

标签: java dynamic label

我怎样才能更好地做到这一点?

label1.setText("foo");
label2.setText("foo");
label3.setText("foo");
label4.setText("foo");

For example like(PSEUDOCODE):
for(i=0; i<5; i++;){
label+i.setText("foo");
}

我必须更改135个标签,所以想要一些提示。 如果你也知道如何更容易地做这样的功能,.. jlabelnum可能是1,2,3,... 135外汇。标签(jlabelnum) - &gt; Label1,Label2,......

public void setLabelforView(int jlabelnum, String StringValue, Color color) {
       Label.

        switch(jlabelnum){

           case 1:
               break;
           case 1: 
               break;
           case 2: 
               break;

非常感谢!

2 个答案:

答案 0 :(得分:0)

从这一点来说,可能最简单的方法是使用HashMap按名称索引表单中的所有组件:

HashMap<String,Component> map = new HashMap<String,Component>();
Component[] comps = getComponentPane().getComponents();
for (int i=0; i < comps.length; i++)
    map.put(comps[i].getName(), comps[i]);

之后,您就可以在map中查找组件,并随意使用它们。如果您知道自己只需要弄乱标签,则可以在决定是否添加标签之前检查每个组件是否为instanceof JLabel

(更好的方法是以编程方式创建标签,并在其中包含正确的文本,然后以编程方式将其添加到表单中。)

答案 1 :(得分:0)

如果你想处理许多标签,请像这样创建一个数组

public class Test{

//create the array
JLabel[] labels = new JLabel[100];

public Test(){
  //loop through them and set their text value
  for(int i = 0; i < labels.length; i++){
    labels[i] = new JLabel("foo");
  }
}

然后这里有一个函数可以改变其中一个文本(和颜色)

public void setLabelforView(int jlabelnum, String StringValue, Color color) {
  labels[jlabelnum].setText(StringValue);
  labels[jlabelnum].setForeground(color);
}

此功能会改变所有这些

public void setAllLabelsForView(String string, Color color){
  for(int i = 0; i < labels.length; i++){
    labels[i].setText(string);
    labels[i].setForeground(color);
  }
}