更改动态创建的JLabel(Java)的值

时间:2017-01-03 17:50:45

标签: java

我想动态创建一些标签,所以我找到了这段代码:

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

效果很好,但我无法更改它显示的文字,因为我无法调用它。例如:label.setText("Labeltext Changed!");

所以我的问题是:如何为每个动态创建的标签命名,以便我可以更改它们的值?

1 个答案:

答案 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();
});