Java 文本字段和控制台打印之间的差异
我将数据存储到名为Java 文本字段和控制台打印之间的差异,java,swing,textfield,Java,Swing,Textfield,我将数据存储到名为array的数组列表中,然后使用以下功能显示每天的最大数: private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: array .stream() .collect( Collectors.grou
array
的数组列表中,然后使用以下功能显示每天的最大数:
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
array
.stream()
.collect(
Collectors.groupingBy(e ->(e.getDate()),
Collectors.maxBy((e1, e2) -> (int) (e1.getData() - e2. getData()))))
.forEach((date, sensor) ->
System.out.println("" + date + " - " + sensor.map(Sensor:: getData).get()));
//jTextField1.setText("" + date + " - " + sensor.map(Sensor:: getData).get()));
}
问题是当我使用System.out.println(“+date+”-“+sensor.map(sensor::getData.get()))代码>->将打印整个数据列表。
但是,我希望此列表显示在swing应用程序的文本字段中。当我使用jTextField1.setText(“+date+”-“+sensor.map(sensor::getData.get()))代码>->则只显示一天(最后一天)
为什么会这样?
如何在文本字段中打印整个列表。
提前谢谢你
然后只出现一天(最后一天)
为什么会这样
因为您迭代所有元素,并在最后一个名为setText
的元素处退出循环
您可以很好地打印,因为所有元素都附加到输出缓冲区,其中setText
只会将文本设置为您给定的值
您可以收集流到列表,然后使用StringJoiner
和“\n”
,最后调用setText
使用详情:
(或者在forEach
中使用StringBulder
和append
,并在其外部使用setText
)发生这种情况是因为.forEach()
迭代流中包含的值
- 对于控制台,每个条目都按顺序打印
- 对于
TextField
,该字段的文本在一行中设置了几次,每次都覆盖以前的值。这样,最后只剩下最后一个条目了
作为解决方案,您可以:
将列表映射到列表
collect
使用收集器收集值。加入(“\n”)
,获取字符串
text字段的setText()
传递collect
谢谢。我使用了第二个建议。唯一的问题是:为什么它不允许我使用像这样的两个append命令:builder.append(“+date+”-“+heatDetectorSensor.map(HeatSensor::getcentrics.get()).append(“\n”)代码>?