Кнопки в VBox перекрываются
Я пытаюсь добавить кнопки в VBox
, который содержится в BoarderPane
, но они, кажется, перекрываются.
Фрагмент VBox
из моего файла fxml-это
<VBox fx:id="leftPlayerPlayArea" alignment="CENTER" minHeight="0.0" minWidth="0.0" prefWidth="120.0" BorderPane.alignment="CENTER_LEFT">
<BorderPane.margin>
<Insets left="30.0" />
</BorderPane.margin>
<opaqueInsets>
<Insets />
</opaqueInsets>
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</padding>
</VBox>
Когда я добавляю кнопки в свой класс контроллера, кнопки хорошо добавляются в мой Hbox, но они не очень хорошо добавляются в мой Vbox. Вот изображения:
VBox
HBox
Наконец, вот как я создаю их Кнопки:
private Button playerPromptButtonCreator(String buttonText, EventHandler<ActionEvent> event, int id) {
Button button = createBtn(buttonText);
button.setMinWidth(BTN_MAX_WIDTH);
button.setMinHeight(BTN_MAX_HEIGHT);
button.setOnAction(event);
if (playerPositions.get(id) == PlayerPosition.LEFT){
button.setRotate(90);
}
if (playerPositions.get(id) == PlayerPosition.RIGHT)
{
button.setRotate(270);
}
Platform.runLater(new Runnable() { //and create the button if it doesnt exist if it doesnt
@Override
public void run() {
//THIS IS MY LINE
playerPlayAreas.get(id).add(button);
}
});
return button;
}
Я также попробовал setSpacing()
свойство для моего VBox
, но это не возымело никакого эффекта.
1 ответ:
Для определения размера узла в Родительском макете JavaFX использует границы нетрансформированный узел, то есть он не учитывает поворот и использует размер, который отображается как ширина, как высота.
Это можно исправить, обернув
Button
вGroup
, но для этого потребуется отредактировать сигнатуру метода или изменить вызывающий метод:Button button1 = new Button("Yes"); Button button2 = new Button("No"); button1.setRotate(90); button2.setRotate(90); VBox layout = new VBox(new Group(button1), new Group(button2));