我想动态创建一些标签,所以我找到了这段代码:
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
panel.add(new JLabel("Label"));
panel.validate();
}
});
效果很好,但我无法更改它显示的文字,因为我无法调用它。例如:label.setText("Labeltext Changed!");
所以我的问题是:如何为每个动态创建的标签命名,以便我可以更改它们的值?
答案 0 :(得分:0)
将您的标签存储在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();
}
});
...
}
然后,只需执行labels.get(0).setText("my text");
。
请注意,您可以使用lambda表达式缩短ActionListener
代码:
button.addActionListener(arg0 -> {
JLabel newLabel = new JLabel("Label");
labels.add(newLabel);
panel.add(newLabel);
panel.validate();
});