首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaFX 11:向右侧的TitledPane添加图形

JavaFX 11:向右侧的TitledPane添加图形
EN

Stack Overflow用户
提问于 2018-09-22 22:48:25
回答 1查看 1.5K关注 0票数 2

这与三年多前提出的问题有关。JavaFX 8 - Add a graphic to a TitledPane on the right side

我不喜欢这个解决方案,我也没有找到任何其他解决方案。

自从JavaFX 8被问到这个原始问题以来,JavaFX发生了很多事情。最近,JavaFX 11发布了。

我有一个使用JavaFX 11的项目。TitledPane图形是用一个HBox设置的,其中包含一个我想放在标题最右边的按钮。

代码语言:javascript
复制
TitledPane titledPane = new TitledPane();
titledPane.setText("Title");

HBox titleBox = new HBox();
Button b1 = new Button("ClickMe!");
titleBox.getChildren().add(b1);

titledPane.setGraphic(titleBox);
titledPane.setContentDisplay(ContentDisplay.RIGHT);

将TitlePane对齐方式设置为CENTER_RIGHT会将标题放在右侧,但会将整个标题、文本和图形放在右侧。

代码语言:javascript
复制
titledPane.setAlignment(Pos.CENTER_RIGHT);

我已经尝试过在TitledPane图形、HBox、GridPane中使用不同的容器。设置增长、对齐、fillWidth等。都不起作用。

在没有设置人工图形间隙的情况下,我看不到可行的解决方案,但上面引用的问题中建议的黑客。这是一个丑陋的黑客行为。用于Acrodion中的多个TitledPanes。然而,按钮并没有放置在确切的末端,在标题的右侧仍然有更多的空间。

代码语言:javascript
复制
primaryStage.setOnShown(e -> {
    for (TitledPane titledPane : panes) {
        Node titleRegion = titledPane.lookup(".title");
        Insets padding = ((StackPane) titleRegion).getPadding();
        double graphicWidth = titledPane.getGraphic().getLayoutBounds().getWidth();
        double arrowWidth = titleRegion.lookup(".arrow-button").getLayoutBounds().getWidth();
        double labelWidth = titleRegion.lookup(".text").getLayoutBounds().getWidth();
        double nodesWidth = graphicWidth + padding.getLeft() + padding.getRight() + arrowWidth + labelWidth;
        titledPane.graphicTextGapProperty().bind(titledPane.widthProperty().subtract(nodesWidth));
    }
});
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52457813

复制
相关文章

相似问题

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