我如何在GridPane中调整窗格大小?我正在创建一个GUI,它是GridPane并在其中包含一个映射 . 当gui改变它的大小时,我想映射哪个是另一个Pane来调整大小 . 所以我已经为场景的宽度和高度属性添加了列表器,并且通常都在工作 . 当我做 Map 的setTranslateX时,我可以看到有些东西发生了变化,但调整大小根本不起作用 . 这可能是由于 Map 包含来自其大小设置的图块的事实 . 创建场景的方法代码:

private Scene createScene(GridPane root){
    Scene scene = new Scene(root, WIDTH_OF_SCENE, HEIGHT_OF_SCENE);
    scene.widthProperty().addListener((observableValue, oldSceneWidth, newSceneWidth) -> {
        WIDTH_OF_SCENE = newSceneWidth.intValue();
        draw();
        MAP_PANE.setPrefSize(200, 200); //it's not working
        MAP_PANE.setTranslateX(0); //it's working 
        root.requestLayout();
    });

    scene.heightProperty().addListener((observableValue, oldSceneHeight, newSceneHeight) ->{
        HEIGHT_OF_SCENE = newSceneHeight.intValue();
        draw();
        root.requestLayout();
    });
    return scene;
}

在这里我正在创建MAP_PANE:

public Pane createContent() {
    map = new Pane();
    map.setStyle("-fx-background-color: #383838");

    // dodawanie pojedynczych kafli do dwuwymiarowej tablicy
    for (int y = 0; y < Y_TILES; y++) {
        for (int x = 0; x < X_TILES; x++) {
            Tile tile = new Tile(x, y);
            grid[x][y] = tile;
            map.getChildren().addAll(tile);
        }
    }
    return map;
}

并启动方法:

@Override
public void start(Stage primaryStage) throws Exception{
    Map map = new Map();
    GridPane root = FXMLLoader.load(getClass().getResource("sample.fxml"));

    MAP_PANE = map.createContent();
    IMAGE_VIEW = new ImageView();

    countScreenSize();
    draw();

    root.getChildren().addAll(IMAGE_VIEW);
    root.getChildren().addAll(MAP_PANE);

    primaryStage.setTitle(TITLE);
    primaryStage.setScene(createScene(root));
    primaryStage.show();
}