有没有办法通过整数调用 JLabel

Is there any way to call JLabel by integer

我正在尝试按整数调用标签。比如N=1就returnlabel,N=2就returnlabel2。我试过 Map 但我无法正确思考。

Map<Integer, String> box = new HashMap();
{
        box.put(1, "label");
        box.put(2, "label2");

}

    JLabel label = new JLabel();
    ImageIcon image1 = new ImageIcon("BlackKnight.png");
    label.setIcon(image1);

    JLabel label2 = new JLabel();
    ImageIcon image2 = new ImageIcon("BlackBishop.png");
    label2.setIcon(image2);    

尝试给出伪代码:

输入N

输出第N个标签名称

您可以使用 Map<Integer, JLabel>

Map<Integer, JLabel> map = new Hashmap<>();

JLabel first = new JLabel("I'm first");
JLabel second = new JLabel("I'm second");

map.put(1, first);
map.put(2, second);

// Will print all the texts from the JLabels
for (JLabel j : map) {    
   System.out.println(j.getText());
}

我个人会使用 List<JLabel>,因为列表是有序的。

如果您只想要标签的名称,只需调用:box.get(1) 获取标签 1 的名称,或调用 box.get(n) 获取第 n 个标签。

如果你想真正获得整个 JLabel,你可以将映射更改为:Map<Integer, JLabel> box = new HashMap(); 并使用 box.put(1, label);box.put(5, label5); 等,稍后你可以使用相同的回调box.get(n) 上述方法。

在后一种情况下,您必须先创建标签,然后再将它们放入地图中