出于某种原因,JavaFX的ToolBar
仅为项目对齐提出了两个选项:LEFT_TO_RIGHT
和RIGHT_TO_LEFT
。
有趣的是,如果这是RIGHT_TO_LEFT
,你必须在逆序中指定你的项目,以便它们自然显现......
但是,我没有看到在中心中对齐元素的任何选项。你是如何实现这一目标的?或者我必须使用除工具栏以外的其他东西吗?
编辑:这是当前的代码......不幸的是,这不起作用:(
FXML:
<BorderPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="com.github.fge.grappa.debugger.csvtrace.tabs.linechart.LineChartTabDisplay">
<top>
<ToolBar fx:id="toolbar">
<HBox fx:id="hbox" alignment="CENTER">
<Region fx:id="leftSpacer"/>
<Button text="Refresh"/>
<ProgressBar visible="false"/>
<Label text="Layout testing"/>
<Region fx:id="rightSpacer"/>
</HBox>
</ToolBar>
</top>
</BorderPane>
班级:
public class LineChartTabDisplay
extends JavafxDisplay<LineChartTabPresenter>
{
public Region leftSpacer;
public Region rightSpacer;
public ToolBar toolbar;
public HBox hbox;
@Override
public void init()
{
HBox.setHgrow(leftSpacer, Priority.SOMETIMES);
leftSpacer.setMinWidth(Region.USE_PREF_SIZE);
HBox.setHgrow(rightSpacer, Priority.SOMETIMES);
rightSpacer.setMinWidth(Region.USE_PREF_SIZE);
}
}
但这就是它所给出的:
答案 0 :(得分:1)
找到。
事实上,代码非常简单&#34;。有点,因为这真的 应该在ToolBar
为首发,但是这里......
FXML现在如下:
<BorderPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="com.github.fge.grappa.debugger.csvtrace.tabs.linechart.LineChartTabDisplay">
<top>
<ToolBar fx:id="toolbar">
<HBox fx:id="hbox" alignment="CENTER" spacing="5.0">
<Button text="Refresh"/>
<Label text="Layout testing"/>
</HBox>
</ToolBar>
</top>
</BorderPane>
代码很简单:
public class LineChartTabDisplay
extends JavafxDisplay<LineChartTabPresenter>
{
@FXML
protected ToolBar toolbar;
@FXML
protected HBox hbox;
@Override
public void init()
{
hbox.minWidthProperty().bind(toolbar.widthProperty());
}
}
答案 1 :(得分:0)
有一个小小的黑客可以产生一个动态的间隔:
final Region spacer = new Region();
HBox.setHgrow(spacer, Priority.SOMETIMES);
spacer.setMinWidth(Region.USE_PREF_SIZE);
如果您将{1}作为第一项而另一项作为最后一项放在ToolBar
中,则您的项目应居中。
答案 2 :(得分:0)
只需注意工具栏的宽度,然后将新值应用于HBox。为了监视舞台的大小,这是必需的
toolbar.widthProperty().addListener((obs, oldVal, newVal) -> {
hbox.setPrefWidth(newVal.doubleValue());
});