imageGrid = new GridPane();
imageGrid.prefWidthProperty().bind(gallerie.widthProperty().multiply(1.00));
imageGrid.prefHeightProperty().bind(gallerie.heightProperty().multiply(0.9));
imageGrid.setPadding(new Insets(20, 20, 20, 20));
imageGrid.setHgap(20);
imageGrid.setVgap(20);
imageGrid.setStyle("-fx-background-color: #154BE5");
.........
static void loadCurrentImages(ArrayList<File> imageFiles) {
ArrayList<ImageView> ivs = new ArrayList<>();
int i = 0;
int k = 0;
int j = 0;
for (File f : imageFiles) {
ImageView iv = new ImageView();
iv.setFitWidth(100);
iv.setPreserveRatio(true);
iv.setSmooth(true);
iv.setImage(new Image(f.toURI().toString()));
ivs.add(iv);
imageGrid.add(ivs.get(i), k, j);
i++;
k++;
if(k > imageGrid.widthProperty().intValue() / 100){ //???????
k = 0;
j++;
}
}
}
在最后一个if子句中,我想使用网格的当前大小,但我不知道如何进行gtet,因为它本身已绑定到另一个大小(图库)
我想获得当前的int值
节点的布局范围不会立即计算。仅当在场景图形中渲染节点时才进行计算。要获得所需的它们,您需要显式请求布局。
node.applyCss();
node.requestLayout();
请注意,使用以上两行可能对性能的影响较小。
忽略所有代码问题(静态,名称约定,实际逻辑..,下面是您可以尝试的快速思路。
static void loadCurrentImages(ArrayList<File> imageFiles) {
ArrayList<ImageView> ivs = new ArrayList<>();
int i = 0;
int k = 0;
int j = 0;
for (File f : imageFiles) {
ImageView iv = new ImageView();
iv.setFitWidth(100);
iv.setPreserveRatio(true);
iv.setSmooth(true);
iv.setImage(new Image(f.toURI().toString()));
ivs.add(iv);
imageGrid.add(ivs.get(i), k, j);
i++;
k++;
// Requesting layout
imageGrid.applyCss();
imageGrid.requestLayout();
if(k > imageGrid.widthProperty().intValue() / 100){ //???????
k = 0;
j++;
}
}
}