如何使用Java FX垂直显示元素?

时间:2015-04-15 19:40:41

标签: java user-interface javafx

我有一个类型为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());
});

导致在窗口中打印以下内容: enter image description here

我应该怎样做才能让消息像这样垂直显示:

"Message One Text"
"Message Two Text"
"Message Three Text"

2 个答案:

答案 0 :(得分:2)

根据我们的猜测,这应该可以解决问题:

refresh.setOnAction(e -> menu.setAll(myMail.refresh().getMessages()));

由于menuCollection,可以/应该添加为一个,因此每个元素都会相应添加。

编辑:第二次尝试:

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中使用它。