有没有办法按整数调用JLabel

时间:2016-03-24 18:45:38

标签: java jlabel imageicon

我试图用整数来调用Label。如果N = 1,则返回标签,如果N = 2,则返回label2。我尝试了地图,但我无法正确思考。

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个标签名称

2 个答案:

答案 0 :(得分:3)

您可以使用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>,因为列表是有序的。

答案 1 :(得分:0)

如果您只想要标签的名称,只需拨打:Map<Integer, JLabel> box = new HashMap();即可获取label1的名称,或拨打box.put(1, label);作为第n个标签。

如果您想真正获得整个JLabel,可以将地图更改为:box.put(5, label5);并使用box.get(n)和{{1}}等,以后可以使用相同的{{{1}} 1}}上述方法。

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