首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何指定希望ToolBar中的元素居中?

如何指定希望ToolBar中的元素居中?
EN

Stack Overflow用户
提问于 2015-02-07 15:19:48
回答 3查看 536关注 0票数 0

出于某种原因,JavaFX的ToolBar只提出了两个项对齐选项:LEFT_TO_RIGHTRIGHT_TO_LEFT

有趣的是,如果这是RIGHT_TO_LEFT,您必须以相反的顺序指定项目,以便它们自然地出现.

但是,我没有看到在中间对齐元素的任何选择。你是怎么做到的?或者我必须使用工具栏以外的其他东西?

编辑:这是当前的代码..。不幸的是,这是行不通的:

FXML:

代码语言:javascript
复制
<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>

全班:

代码语言:javascript
复制
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);
    }
}

但这正是它所给予的:

EN

回答 3

Stack Overflow用户

发布于 2015-02-07 16:42:26

找到了。

实际上,代码非常“简单”。从某种意义上说,既然这真的应该是ToolBar里的开场白,但这就是.

FXML现在如下:

代码语言:javascript
复制
<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>

代码很简单:

代码语言:javascript
复制
public class LineChartTabDisplay
    extends JavafxDisplay<LineChartTabPresenter>
{
    @FXML
    protected ToolBar toolbar;

    @FXML
    protected HBox hbox;

    @Override
    public void init()
    {
        hbox.minWidthProperty().bind(toolbar.widthProperty());
    }
}
票数 1
EN

Stack Overflow用户

发布于 2015-02-07 15:31:20

嗯,有一个小黑客可以产生一个动态间隔:

代码语言:javascript
复制
final Region spacer = new Region();
HBox.setHgrow(spacer, Priority.SOMETIMES);
spacer.setMinWidth(Region.USE_PREF_SIZE);

如果您将一个作为第一个项目,另一个作为最后一个项目在ToolBar上,您的项目之间应该居中。

票数 0
EN

Stack Overflow用户

发布于 2019-05-06 13:08:39

只需注意工具栏的宽度,并将新值应用于HBox。为了监控舞台的大小,这是必要的。

代码语言:javascript
复制
toolbar.widthProperty().addListener((obs, oldVal, newVal) -> {  
    hbox.setPrefWidth(newVal.doubleValue());
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28383821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档