Я поставил три элементов в BorderBox, я вычисляю ширину каждого прямоугольника в соответствии с размером GridPane, но когда я запускаю приложение, мне всегда приходится изменять размер окна, перетаскивая его из нижнего правого угла, чтобы отобразить всю GridPane (есть около 3 строки и 3 столбца вне поля зрения).
В этом примере пусть окно будет иметь фиксированный размер, как указано. Кроме того, когда установлены сцены и ширина/высота блоков, когда я вызываю GridPane.getHeight() и GridPane.getWidth(), это показывает мне, что это квадратично (660x660, что не должно иметь значения, потому что способ расчета, даже если это не так, он должен хотя бы заполняться до нижней или правой стороны и не переливаться).
Есть идеи, как это можно исправить?
Код: Выделить всё
@Override
public void start(Stage primaryStage) throws Exception {
//primaryStage.setResizable(false);
BorderPane mainPane = new BorderPane();
HBox topBox = new HBox(10);
VBox leftBox = new VBox(10);
GridPane gridPane = new GridPane();
mainPane.setTop(topBox);
mainPane.setLeft(leftBox);
mainPane.setCenter(gridPane);
leftBox.setBorder(new Border(new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID,null,new BorderWidths(1))));
topBox.setBorder(new Border(new BorderStroke(Color.BLACK, BorderStrokeStyle.SOLID,null,new BorderWidths(1))));
leftBox.setPrefWidth(180);
topBox.setPrefHeight(40);
//TopBox
Button tb1 = new Button("TB 1");
Button tb2 = new Button("TB 2");
topBox.getChildren().addAll(tb1,tb2);
//LeftBox
Button lb1 = new Button("LB 1");
Button lb2 = new Button("LB 2");
Button lb3 = new Button("LB 3");
leftBox.getChildren().addAll(lb1,lb2,lb3);
Scene mainScene = new Scene(mainPane, 840,700);
primaryStage.setScene(mainScene);
primaryStage.show();
int rectangleAmountPerRowCol = 50;
double rectangleWidth = Math.min(gridPane.getWidth()/rectangleAmountPerRowCol,gridPane.getHeight()/rectangleAmountPerRowCol);
for(int k = 0; k < rectangleAmountPerRowCol; k++) {
for (int i = 0; i < rectangleAmountPerRowCol; i++) {
Rectangle r = new Rectangle(rectangleWidth, rectangleWidth);
r.setStroke(Color.RED);
r.setStrokeWidth(0.1);
gridPane.add(r, i, k);
}
}
}
Большое спасибо!
Thruzzd
Подробнее здесь: https://stackoverflow.com/questions/786 ... -in-javafx
Мобильная версия