如何将工具栏中的项目对齐? 所有对齐设置似乎都不起作用。
我正在使用布局设计师。
请帮忙
<BorderPane fx:controller="vmanager.ui.Controller" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0"
prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<top>
<ToolBar prefWidth="200.0" BorderPane.alignment="CENTER_RIGHT">
<items>
<Button alignment="CENTER_RIGHT" mnemonicParsing="false" text="_"/>
<Button mnemonicParsing="false"/>
<Button mnemonicParsing="false" text="X" onAction="#close"/>
</items>
</ToolBar>
</top>
答案 0 :(得分:4)
这适用于AnchorPane
而不是工具栏:
<BorderPane id="BorderPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
<top>
<AnchorPane prefHeight="50.0">
<children>
<Button layoutY="14.0" mnemonicParsing="false" text="Button" AnchorPane.rightAnchor="14.0" />
<Button layoutY="15.0" mnemonicParsing="false" text="Button" AnchorPane.rightAnchor="70.0" />
<Label layoutY="18.0" prefWidth="449.0" text="Label" AnchorPane.leftAnchor="14.0" AnchorPane.rightAnchor="140.0" />
</children>
</AnchorPane>
</top>
</BorderPane>
我还添加了“窗口标题”标签。您可以随后设置AnchorPane
的样式,如果这样可以达到您想要的布局行为。
答案 1 :(得分:1)
您无法在Scenebuilder中将工具栏项目对齐。为此,您必须以编程方式执行此操作。下面是我在TableView
之上使用的示例代码Platform.runLater(new Runnable() {
@Override
public void run() {
btnset.setMinWidth(toolbar.getWidth()/2);
btnset.setAlignment(Pos.CENTER_LEFT);
recnum.setMinWidth(toolbar.getWidth()/2);
recnum.setAlignment(Pos.CENTER_RIGHT);
}
});
只有在场景上绘制了工具栏后才能进行此操作,因此使用Platform.runlater。
答案 2 :(得分:0)
如果您使用HBox
而不是Toolbar
怎么办?我知道你没有得到工具栏的外观,但很容易使用常规Pane
向右移动东西,Hgrow属性设置为ALWAYS作为间隔。在这里(完全黑客),我在一个StackPane中放置了一个Toolbar
的HBox,让它看起来通过,但你肯定可以用css做得更好。此外,您或者当然,您需要在按钮上使用ID才能使用它们。我也没有提出你的嵌入式控制器定义,所以不要忘记包含它。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.StackPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1">
<top>
<StackPane BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets />
</BorderPane.margin>
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0" />
<HBox prefHeight="40.0" prefWidth="200.0">
<children>
<Pane maxWidth="1.7976931348623157E308" HBox.hgrow="ALWAYS" />
<Button mnemonicParsing="false" text="_" />
<Button mnemonicParsing="false" text="O" />
<Button mnemonicParsing="false" text="X" />
</children>
<padding>
<Insets bottom="6.0" left="6.0" right="6.0" top="6.0" />
</padding>
</HBox>
</children>
</StackPane>
</top>
</BorderPane>