gpt4 book ai didi

javafx-2 - 在 JavaFX 的同一个场景中多次重用同一个 ImageView

转载 作者:行者123 更新时间:2023-12-01 11:46:04 26 4
gpt4 key购买 nike

我正在尝试构建一个 Twitter 风格的 ListView,但我无法在同一个列表中多次重复使用同一个 ImageView。加载多个副本似乎很浪费,并且由于 UI 虚拟化导致滚动速度变慢。有任何解决方法吗?

public class TwitterCell extends ListCell<Object> {

private static HashMap<String, ImageView> images = new HashMap<String, ImageView>();

@Override
protected void updateItem(Object tweet, boolean empty) {
super.updateItem(tweet, empty);
Tweet t = (Tweet) tweet;
if (t != null) {
String message = t.getMessage();
setText(message);
String imageUrl = t.getImageUrl();
if (!images.containsKey(imageUrl)) {
images.put(imageUrl, new ImageView(imageUrl));
}
setGraphic(images.get(imageUrl));
}
}

最佳答案

场景图不能在 JavaFX 中包含两次相同的 Node,并且没有克隆节点的方法(据我所知)。

解决方法可能是让您的 map 成为 HashMap 存储 Image 而不是 ImageView,并将最后一行更改为

setGraphic(new ImageView(images.get(imageUrl)));

这样您至少可以缓存实际 Image 的加载,这应该是最繁重的部分。

关于javafx-2 - 在 JavaFX 的同一个场景中多次重用同一个 ImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15175022/

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