更改动态创建的jlabel(java)的值

mbzjlibv  于 2021-07-12  发布在  Java
关注(0)|答案(1)|浏览(243)

我想动态创建多个标签,因此我发现以下代码:

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

它工作得很好,但是我不能改变它显示的文本,因为我不能调用它。例如: label.setText("Labeltext Changed!"); 所以我的问题是:如何给每个动态创建的标签一个名称,以便更改它们的值?

lyfkaqu1

lyfkaqu11#

将标签存储在 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"); .
请注意,您可以缩短 ActionListener 使用lambda表达式进行编码:

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

相关问题