2017-01-03 4 views
0

Ich möchte eine Reihe von Etiketten dynamisch erstellen, so fand ich diesen Code:Änderungswert eines dynamisch erstellt JLabel (Java)

btnNewButton.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     panel.add(new JLabel("Label")); 
     panel.validate(); 
    } 
}); 

Es funktioniert großartig, aber ich kann den Text nicht ändern es zeigt weil ich es nicht nennen kann. Zum Beispiel: label.setText("Labeltext Changed!");

Also meine Frage ist: Wie kann ich jedem dynamisch erstellten Etikett einen Namen geben, damit ich ihre Werte ändern kann?

+0

Wie wollen Sie definieren, welche zu ändern? Möchten Sie sie nach Index bearbeiten können? – Moira

+0

ja, oder eine aufsteigende Nummer wie 1.setText(); 2.setText(); 3. SatzText(); ... –

Antwort

0

Lagern Sie Ihre Etiketten in einem List<JLabel>.

private List<JLabel> labels = new ArrayList<>(); 

... 

public void yourMethod() { 

    ... 

    button.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      JLabel newLabel = new JLabel("Label"); 
      labels.add(newLabel); 
      panel.add(newLabel); 
      panel.validate(); 
     } 
    }); 

    ... 

} 

Dann, um es so etwas wie labels.get(0).setText("my text"); gerade tun.

Beachten Sie, dass die ActionListener Code mit einem Lambda-Ausdruck verkürzen können:

button.addActionListener(arg0 -> { 
    JLabel newLabel = new JLabel("Label"); 
    labels.add(newLabel); 
    panel.add(newLabel); 
    panel.validate(); 
});