如何将列表中的元素添加到标签?

时间:2018-03-10 10:51:51

标签: java swing jlabel jtextfield

我有一个这样的变量:

List<Double> data = new LinkedList<Double>();
JTextField field = new JTextField(" ");
JLabel label = new JLabel(" ");
JButton button = new JButton(" "); 

数据是list中的值,我需要从JTextField的用户那里获取。我需要将它们添加到Label中:用户在TextField中写入一个值,单击一个按钮,将值添加到标签,写入一个新值,再次单击该按钮,该值在前一个旁边可见,等等上...

button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent a) {
                //data = Double.parseDouble(field.getText());
                //label.setText(String.valueOf(data));

                for(int i=0; i<10; i++)
                {
                    data = Double.parseDouble(field.getText()); //not working
                    label.setText(String.valueOf(data));
                }
            }
    });

它仅适用于一个双变量(代码//)

我的问题:如何将双列表元素更改为可添加到标签中?如何在以前的值旁边显示新值? (循环?)

1 个答案:

答案 0 :(得分:0)

语句label.setText(String.valueOf(data));不会将参数附加到标签,而是设置它。在您的周期中data始终具有相同的值,因此它设置相同字符串的10倍以标记文本。

如果要将String.valueOf(data)附加到标签文本,则需要先从List构建标签文本。您可以使用StringJoiner

StringJoiner joiner = new StringJoiner(" ");
data.stream().map(String::valueOf).forEach(joiner::add);
label.setText(joiner.toString());

因此,在actionPerformed方法中,您将Double.parseDouble(field.getText())添加到列表中,然后按照之前的显示构建文本,并使用setText将其设置为标签。

您可以找到有关如何使用StringJoiner here的更多信息。