嘿那里
所以我有以下问题。我有大约 1500 张扑克牌图像。我想将它们显示在“图库”中,您可以在其中滚动浏览它们。我能够使用 ImageCell 对象创建 GridView,并且还能够向其中添加图像。现在我的问题是,如果我一次添加所有图像,逻辑上Java会因为堆错误而崩溃。我的列表中有图像网址(本地文件)。我怎样才能实现它只加载 15 张图像。如果我滚动它,它会加载接下来的 15 个并卸载旧的。所以它只会加载实际可见图像的图像,而不是全部 1500 个图像。我该怎么做?我完全没有主意了。需要 Platform.runLater() 因为 ControlsFX 存在某种问题
这是我的代码:
public void initialize() {
GridView<Image> gridView = new GridView<>();
gridView.setCellFactory(gridView1 -> new ImageGridCell(true));
Image image = new Image("C:\\Users\\nijog\\Downloads\\cardpictures\\01DE001.png");
gridView.setCellWidth(340);
gridView.setCellHeight(512);
//Platform.runLater(()-> {
// for (int i = 0; i < 5000; i++){
// gridView.getItems().add(image);
// }
//});
Platform.runLater(() -> gridView.getItems().addAll(createImageListFromCardFiles()));
borderPane.setCenter(gridView);
}
protected List<Image> createImageListFromCardFiles(){
List<Image> imageViewList = new ArrayList<>();
App.getCardService().getCardArray().stream()
//.filter(Card::isCollectible)
.sorted(Comparator.comparingInt(Card::getCost))
.sorted(Comparator.comparing(Card::isChampion).reversed())
.skip(0)
//.limit(100)
.forEach(card -> {
try {
String …Run Code Online (Sandbox Code Playgroud)