Макет JavaFx: исчезающие / неорганизованные панели - PullRequest
0 голосов
/ 09 октября 2018

У меня есть фоновая панель, предназначенная для рисования объектов, которые не отображаются при использовании вместе с BorderPane, VBox и HBox.Кроме того, моя BorderPane неправильно позиционирует макет (слева, снизу, справа).Я попытался использовать несколько разных панелей и добавить к ним VBox и HBox, однако я сталкиваюсь с похожими ошибками, когда компоновка не соответствует ожидаемой, а основная панель рисования (холст) исчезает.

BorderPane bp = new BorderPane();
button1 = new Button("Undo");
button2 = new Button("Erase");
HBox hb = new HBox(10);
hb.getChildren().addAll(button1, button2);

TilePane tp = new TilePane();
vb = new VBox();
vb.setPadding(new Insets(10, 10, 10, 10));
vb.setSpacing(25);
vb.setStyle("-fx-padding: 10;" + 
        "-fx-border-style: solid inside;" + 
        "-fx-border-width: 2;" +
        "-fx-border-insets: 5;" + 
        "-fx-border-radius: 5;" + 
        "-fx-border-color: black;");

colorCombo = new ComboBox<String>();
colorCombo.getItems().addAll("Black","Blue","Green","Red","Yellow","Orange","Pink");
colorCombo.setValue("Black");
colorCombo.setMinWidth(100);

ToggleGroup group1 = new ToggleGroup();

rbutton1 = new RadioButton("Rectangle");
rbutton1.setToggleGroup(group1);
rbutton1.setMinWidth(80);
rbutton1.setSelected(true);
rbutton2 = new RadioButton("Circle");
rbutton2.setToggleGroup(group1);
rbutton2.setMinWidth(80);

canvas = new Pane();
canvas.setStyle("-fx-background-color: beige;");

vb.getChildren().addAll(colorCombo, rbutton1, rbutton2);
tp.getChildren().add(vb);
bp.setLeft(tp);
bp.setBottom(hb);
bp.setRight(canvas);
this.getChildren().addAll(bp);

TilePane и BorderPane были моими последними экспериментами.Я использовал bp.setRight(canvas);, чтобы посмотреть, смогу ли я вообще показать холст, хотя я хочу, чтобы холст был целым фоном, а не только вправо.Холст не показывает.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Я создал три отдельных GridPanes и добавил vbox, hbox и canvas (после установки минимальной высоты и ширины) к сеточным панелям, а затем добавил сеточные панели в BorderPane.Это исправило макет моей программы.

0 голосов
/ 09 октября 2018

С BorderPane :

Размер верхнего и нижнего дочерних элементов будет изменен до их предпочтительной высоты и увеличится на ширину панели границ. Размеры левого и правого дочерних элементов будут изменены до желаемой ширины и увеличена длина между верхним и нижним узлами.И центральный узел будет изменен, чтобы заполнить доступное пространство в середине.

Для любого типа панели, у которой нет дочерних элементов, ее предпочтительная ширина равна 0. Вам необходимо явно установить ширину.

Примечание с одной стороны: Pane будет по-прежнему иметь предпочтительную ширину 0, даже если у него есть дочерние элементы, потому что Pane не размещает свои дочерние элементы для определения собственного размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...