我正在尝试向VBox
中包含的BoarderPane
添加按钮,但它们似乎重叠。
我的fxml文件中的VBox
代码段是
<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中。以下是图片:
垂直框
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
属性,但这没有效果。
答案 0 :(得分:2)
要确定父布局中节点的大小,JavaFX使用 未转换 节点的边界,即它不考虑旋转并使用大小呈现为高度宽度。
您可以通过将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));
中来解决此问题,但这需要您编辑方法的签名或修改调用方法:
__init__