[英]How to right align a button in Java FX toolbar
我正在使用 Java FX 场景构建器构建 UI,我希望工具栏中的按钮浮动到工具栏的右侧。 我曾尝试更改父(工具栏)和按钮的节点方向,但似乎都被忽略了。
添加一个没有内容的窗格,该窗格始终增长以适应栏中左对齐工具和右对齐工具之间的可用空间。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<ToolBar prefHeight="40.0" prefWidth="318.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8">
<Button text="Apples" />
<Button text="Oranges" />
<Pane HBox.hgrow="ALWAYS" />
<Button text="Help" />
</ToolBar>
(在 Scene Builder 11.0.0 中验证)
一种选择:使用两个用 HBox 容器包装的 ToolBar 容器。 将帮助按钮放在右侧的工具栏中。 将左对齐按钮放在左侧工具栏中。 对于左侧 ToolBar,将 HGrow 设置为ALWAYS
。 对于 Right ToolBar,将 HGrow 设置为NEVER
。 对于每个 ToolBar,将所有 Sizes 设置为USE_COMPUTED_SIZE
。
这是相关的fxml:
<HBox VBox.vgrow="NEVER">
<children>
<ToolBar HBox.hgrow="ALWAYS">
<items>
<Button text="Apples" />
<Button text="Oranges" />
</items>
</ToolBar>
<ToolBar HBox.hgrow="NEVER">
<items>
<Button text="Help" />
</items>
</ToolBar>
</children>
</HBox>
这是 Scene Builder 中显示的层次结构:
这是 Scene Builder 中的显示:
如果您可以将您的按钮放在堆栈窗格中,那么您可以利用 Stackpane 的对齐属性,该属性采用 javafx.geometry.Pos - 堆栈窗格内子项的对齐方式。例如在您的情况下:
<StackPane >
<Button translateY="-15" translateX="15" StackPane.alignment="TOP_RIGHT"/>
</StackPane>
BorderPane mainBorderPane = new BorderPane();
BorderPane ToolBorderPane = new BorderPane();
ToolBar tBarLeft=new ToolBar();
ToolBar tBarRight=new ToolBar();
ToolBorderPane.setLeft(tBarLeft);
ToolBorderPane.setRight(tBarRight);
mainBorderPane.setTop(ToolBorderPane);
... ...为您的左对齐项目添加 tBarLeft 和您的右对齐项目添加 tBarRight
可以通过一些技巧来完成:为工具栏及其所有按钮应用围绕 Y 轴的 180 度旋转。
<ToolBar rotate="-180.0" HBox.hgrow="ALWAYS">
<items>
<Button mnemonicParsing="false" rotate="180.0" text="Button">
<rotationAxis>
<Point3D y="1.0" />
</rotationAxis>
</Button>
</items>
<rotationAxis>
<Point3D y="1.0" />
</rotationAxis>
</ToolBar>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.