我有一个类型为Message的类的hashSet,其中包含一个toString()方法。 "刷新"按钮已正确创建,但其实现中存在问题。 注意:
//Menu is an ObservableList<String>
//Mymail contains the hashset
//refresh() is a method that adds a random message to the hashset
//GetMessages() returns the hashSet
//the toString() method below is hashset's toString()
refresh.setOnAction(e -> {
menu.setAll(myMail.refresh().getMessages().toString());
});
导致在窗口中打印以下内容:
我应该怎样做才能让消息像这样垂直显示:
"Message One Text"
"Message Two Text"
"Message Three Text"
答案 0 :(得分:2)
根据我们的猜测,这应该可以解决问题:
refresh.setOnAction(e -> menu.setAll(myMail.refresh().getMessages()));
由于menu
是Collection
,可以/应该添加为一个,因此每个元素都会相应添加。
编辑:第二次尝试:
refresh.setOnAction(e -> myMail.refresh().getMessages().stream().map(Message::toString).forEach(menu::add));
答案 1 :(得分:2)
您可以{ObderableList的addAll
:
refresh.setOnAction(e -> menu.addAll(myMail.refresh().getMessages()));
并在Message中使用toString
将消息转换为String,而不是在Mymail
中使用它。