Прежде всего, я бы предложил использовать обычный Pane
вместо AnchorPane
.
Затем вы можете вставить это в свой код внутри start
метода.
stage.widthProperty().addListener(event -> {
rightPane.setPrefWidth(stage.getWidth()/2);
rightPane.relocate(stage.getWidth()/2,0);
});
stage.heightProperty().addListener(event -> {
rightPane.setPrefHeight(stage.getHeight());
});
root.getChildren().add(pane);
Это создает панель, занимающую половину сцены, или окно с правой стороны.
Затем в файле fxml в
<bottom>
<AnchorPane minWidth="200.0" prefHeight="45.0" prefWidth="600.0" BorderPane.alignment="CENTER" />
</bottom>
<right>
<AnchorPane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER" />
</right>
удалите все элементы, говоря положение и ширину панелей.
А затем, для нижней панели, вы можете добавить к слушателям widthProperty()
и heightProperty()
, чтобы получить:
stage.widthProperty().addListener(event -> {
rightPane.setPrefWidth(stage.getWidth()/2);
rightPane.relocate(stage.getWidth()/2,0);
bottomPane.setPrefWidth(stage.getWidth()-rightPane.getPrefWidth());
});
stage.heightProperty().addListener(event -> {
rightPane.setPrefHeight(stage.getHeight());
bottomPane.setPrefHeight(100); // change 100 to how high you want your bottomPane to be
//if you want your bottomPane's height to be half the height of the window use this: bottomPane.setPrefHeight(stage.getHeight()/2);
bottomPane.relocate(0,stage.getHeight() - bottomPane.getPrefHeight());
bottomPane.toFront();
});