gpt4 book ai didi

java - FXML ListView,我无法将 ObservableArrayList 添加到其中

转载 作者:行者123 更新时间:2023-12-02 05:21:16 27 4
gpt4 key购买 nike

我正在用 Java 和 FXML 编写一个信使,我想在 ListView(chatBar) 上显示用户当前的所有聊天。我的聊天位于 ObservableArrayList 中,但我仍然无法将值添加到 ListView

public void fillChatBar() {
ArrayList<Chat> chats = db.getAllInvolvedChats(user.getUserID());

ObservableList<Pane> chatHolder = FXCollections.observableArrayList();

chats.forEach(chat -> {
Pane chatPane = new Pane();
Label chatName = new Label();
chatName.setText(chat.getOpponent(user.getUserID()).getUsername());
chatPane.getChildren().add(chatName);
chatPane.getChildren().add(new ImageView(chat.getOpponent(user.getUserID()).getProfileImage()));

chatHolder.add(chatPane);
});

chatBar.setItems(chatHolder);
}

我没有收到任何错误消息或异常。它只是不会显示。

最佳答案

问题是你误解了 ListView 的用法;)

items存储在 ListView 中没有cell-views但模型。内部 ListView创建代表模型项目的单元格并将其显示在屏幕上。您可以通过简单地创建 ListView<String> 来尝试此操作并将字符串列表添加到项目中。您将看到显示 String 的标签值天啊屏幕。对于像 String 这样的基本数据类型你的ListView自动创建单元 View 以使其有意义。对于更复杂的模型类型(例如自定义模型列表),您需要编写自己的单元 View 工厂(或在模型类中覆盖toString())。请参阅this tutorial作为使用字符串的第一个示例。可以找到更复杂的示例 here .

关于java - FXML ListView,我无法将 ObservableArrayList<Pane> 添加到其中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56259873/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com