2016-03-24 12 views
0

aufrufen Ich versuche, ein Label nach Ganzzahl aufrufen. Wie wenn N = 1 ist, wird es Label zurückgeben, wenn N = 2, es wird label2 zurückgeben. Ich habe es mit Karte versucht, aber ich kann nicht richtig denken.Gibt es eine Möglichkeit, JLabel durch Integer

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);  

Der Versuch, einen Pseudo-Code zu geben:

Eingang N

Ausgabe Nth Label-Name

+0

Der Code, den Sie geschrieben tut nichts mit Ihrem HashMap setzen. Wie benutzt du es? –

+0

Zuerst wäre es eher so ... 'Map ' – 3kings

+0

Ich denke, die wirkliche Frage ist hier, was versuchst du zu tun? Warum müssen Sie Komponenten über eine Nummer anrufen? –

Antwort

0

Wenn Sie nur den Namen Ihres Labels möchten, können Sie einfach anrufen: box.get(1), um den Namen label1 zu erhalten, oder box.get(n) für das n-te Label.

Wenn Sie möchten, um tatsächlich die gesamte JLabel zu erhalten, können Sie die Karte ändern: Map<Integer, JLabel> box = new HashMap(); und verwenden box.put(1, label); und box.put(5, label5); etc, die Sie später zurückrufen können die gleiche box.get(n) oben beschriebenen Verfahren verwendet wird.

Im letzteren Fall müssen Sie die Etiketten zuerst erstellen müssen, bevor sie in die Karte, obwohl

3

können Sie verwenden ein 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()); 
} 

würde ich persönlich habe eine List<JLabel> verwendet, da Listen bestellt sind.

Verwandte Themen