字符串作为JLabel的名称

3
我正在遍历一个ArrayList,对于其中的每个值,我想创建一个新的JLabel。JLabel的名称应该是列表中的一个值。
ArrayList<String> fieldsList = new ArrayList<String>();

for (int numberOfFields = 0; numberOfFields <= fieldsList.size(); numberOfFields++) {

        String fieldName = fieldsList.get(numberOfFields);

        JLabel "value from list"= new JLabel(fieldName + ":"); //here, in "" the name of JLabel should be the same as fieldName

    }

这个问题可能有一个简单的解决方案,但我找不到它。


你做不到。而且,这有什么用处? - Pratik
2
当我看到问题中出现“获取或分配变量名”时,我总是感到不安。变量“名称”并不是非常重要,对于许多对象来说甚至不存在,并且在编译代码中几乎不存在。如果一个对象被几个变量引用,那么哪一个代表这个对象的“名称”呢? - Hovercraft Full Of Eels
2
更重要的是对象引用及其如何获取。如果您必须将对象与字符串关联起来,一种简洁的方法是使用Map,例如HashMap<String, MyType>HashMap<MyType, String>,具体取决于您想要用作键的内容,但是不要过分依赖变量名称,因为非最终变量可以随时更改引用,并且对象可以被多个变量引用。 - Hovercraft Full Of Eels
2个回答

1

你无法这样做。另一种方法是创建JLabel列表。

ArrayList<String> fieldsList = new ArrayList<String>();

JLabel[] lablearr=new JLabel[fieldsList.size()]; //lable array

for (int numberOfFields = 0; numberOfFields < fieldsList.size(); numberOfFields++) {

        String fieldName = fieldsList.get(numberOfFields);

        lablearr[numberOfFields]= new JLabel(fieldName + ":"); 

 }

现在,如果您想调用特定的JLabel,可以使用以下方法:
  lablearr[i]

例如,如果您想调用名称为mylable的jlable,则需要循环遍历arraylist-fieldsList并找到'mylable'的索引,然后通过该索引调用jlable。

0
这是我做的方式:
for (String fieldName : fieldsList) {
        {
            {
                JLabel lbl = new JLabel(fieldName + ":");
                lbl.setBounds(33, counter, 130, 14);
                getContentPane().add(lbl);
            }
            counter += 25;
        }
    }

对我来说有效


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接