【发布时间】:2021-04-03 18:02:03
【问题描述】:
我正在尝试使用约束在 GridPane 中使用 JavaFX 显示一堆图像,而我的代码确实完美地显示了它们。但是,由于某种原因,尽管我的代码可以正常工作,但图像会导致我的舞台滞后。有没有办法解决这个问题?
就上下文而言,“arr”是我制作的具有字符串的 2d ArrayList,而 checkBoxList 包含一些复选框,这些复选框以大约 40 列的形式排列,它们之间的间距为 2。
public void setUpTypeImages()
{
for (int p = 0; p < arr.size(); p++)
{
typesList.add(new ArrayList<ImageView>());
for (int y = 0; y < arr.get(p).size(); y++)
{
ImageView type = new ImageView("Types\\" + arr.get(p).get(y) + ".png");
typesList.get(p).add(type);
typesList.get(p).get(y).setFitWidth(30);
typesList.get(p).get(y).setFitHeight(30);
GridPane.setConstraints(typesList.get(p).get(y), GridPane.getColumnIndex(checkBoxList.get(p)) + y + 1, GridPane.getRowIndex(checkBoxList.get(p)));
choiceLayout.getChildren().add(typesList.get(p).get(y));
}
}
}
【问题讨论】:
-
嗨,图像加载调用发生在哪里?我的意思是,打印东西的方法。是choiceLayout.getChildren().add(typesList.get(p).get(y));触发图像更新的那个?
-
@aran 是的,你提到的那一行是触发每个图像显示的那一行。它的功能是完美的,但问题在于它导致的滞后。
-
加载时会发生延迟,还是加载后发生?我的意思是,即使所有图像都已加载,它会冻结吗?
-
最后一个问题,这是可选视图吗?我的意思是,如果你选择加载面板(然后你调用 setUpTypeImages),或者自动显示?
-
加载时和加载后。在将它们初始化为新的 GridPane() 后,我将它们添加到choiceLayout,因此这可能是加载时延迟的根源。不完全确定加载后为什么会发生这种情况。它会在用户开始运行代码时自动显示。我可以把它评论出来,但这不是重点
标签: java user-interface javafx