我有一个这样的变量:
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));
}
}
});
它仅适用于一个双变量(代码//)
我的问题:如何将双列表元素更改为可添加到标签中?如何在以前的值旁边显示新值? (循环?)
答案 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的更多信息。