gpt4 book ai didi

user-interface - Javafx Tile Pane,设置最大列数

转载 作者:行者123 更新时间:2023-12-02 03:57:24 25 4
gpt4 key购买 nike

首先,我会解释一下我的目标。我想渲染一个像这样的表格:

enter image description here

每个单元格的内容由执行时间确定,但其大小固定为 13x13。

因此,我的方法是创建一个平铺 Pane ,将列数设置为 13 并创建单元格。

pane = new TilePane();
pane.setPadding(new Insets(10, 10, 10, 10));
pane.setVgap(5);
pane.setHgap(5);
pane.setPrefColumns(13);

这有效:

enter image description here

但是当我调整窗口大小时:

enter image description here

现在多了 13 列!

我的测试代码:

package sample;

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.Region;
import javafx.scene.layout.TilePane;
import javafx.stage.Stage;

public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
TilePane pane = new TilePane();
pane.setPadding(new Insets(10, 10, 10, 10));
pane.setVgap(5);
pane.setHgap(5);
pane.setPrefColumns(13);
pane.setMaxWidth(Region.USE_PREF_SIZE);
ObservableList<Node> list = pane.getChildren();

for (int i = 0;i < 200;i++){
Label view = new Label();
view.setText(""+(i+1));
list.add(view);
}

primaryStage.setScene(new Scene(pane,400,400));
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
launch(args);
}
}

你有什么想法吗?

最佳答案

设置最大宽度以使用首选宽度是正确的方法。您的示例中的代码的唯一问题是您已将平铺 Pane 设置为场景的根。根节点的大小始终会根据场景的大小进行调整,忽略最小、最大和首选大小。 (如果没有指定场景的大小,则场景的大小将根据根节点的首选大小进行调整,但根节点仍然允许任意增大或缩小。)

因此,如果您只是将平铺 Pane 包裹在另一个 Pane 中,它将按预期工作:

primaryStage.setScene(new Scene(new StackPane(pane)));

enter image description here

enter image description here

关于user-interface - Javafx Tile Pane,设置最大列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43369963/

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