出于某种原因,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);
}
}但这正是它所给予的:

发布于 2015-02-07 16:42:26
找到了。
实际上,代码非常“简单”。从某种意义上说,既然这真的应该是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());
}
}发布于 2015-02-07 15:31:20
嗯,有一个小黑客可以产生一个动态间隔:
final Region spacer = new Region();
HBox.setHgrow(spacer, Priority.SOMETIMES);
spacer.setMinWidth(Region.USE_PREF_SIZE);如果您将一个作为第一个项目,另一个作为最后一个项目在ToolBar上,您的项目之间应该居中。
发布于 2019-05-06 13:08:39
只需注意工具栏的宽度,并将新值应用于HBox。为了监控舞台的大小,这是必要的。
toolbar.widthProperty().addListener((obs, oldVal, newVal) -> {
hbox.setPrefWidth(newVal.doubleValue());
});https://stackoverflow.com/questions/28383821
复制相似问题