【问题标题】:CSS styling of ControlsFX segmented bar textControlsFX 分段条形文本的 CSS 样式
【发布时间】:2022-01-10 06:39:00
【问题描述】:

如何更改 ControlsFX 分段条的文本的大小和颜色?常规方式:

-fx-font-size: 15px

好像没用。

我是使用 CSS 样式表还是通过代码更改它对我来说并不重要。我都试过了。 -fx-background-color: 确实有效,所以我的样式有效果。

我似乎找不到任何地方,或者直观地找出正确的 CSS 来设置分段栏控件的文本样式。

谢谢!

【问题讨论】:

标签: java css javafx controlsfx


【解决方案1】:

ControlsFX 使用默认的SegmentViewFactory,它使用一个名为SegmentView 的类和一个样式类segment-view,因此这是在SegmentedBar 中设置文本样式的方法:

.segment-view {
    -fx-font-size: 15px;
}

SegmentedBar 中设置文本样式的另一种方法是使用自定义SegmentViewFactory。这是一个例子:

SegmentedBar<Segment> bar = new SegmentedBar<>();
bar.getSegments().addAll(
        new Segment(2.46, "Apple"),
        new Segment(2.43, "Microsoft"),
        new Segment(1.94, "Alphabet"),
        new Segment(1.72, "Amazon"));
bar.setOrientation(Orientation.HORIZONTAL);
bar.setSegmentViewFactory(segment -> {
    Label viewNode = new Label(String.format("%s (%.2fT)", segment.getText(), segment.getValue()));
    viewNode.setStyle("-fx-font-size: 15px; -fx-font-style: italic;");
    return viewNode;
});

【讨论】:

  • 谢谢你,太完美了!我正在查看段视图工厂,但无法弄清楚。除非我错过了样式类段视图,否则不会出现在文档中。干杯!
  • 我在SegmentedBar.SegmentView的构造函数中找到了。文档的this page 也提到了这一点。
  • 谢谢!这可能需要一个完整的后续问题,但是您知道如何使用段视图工厂获取标签/段的布局边界吗?我似乎无法让方法(getLayoutBounds() 或 getWidth() 等)返回零以外的任何值。我正在尝试这样做,以便我可以将文本大小调整到段,因为正如它在您发送的链接中显示的那样,布局方法已被覆盖,以确保用于显示段文本的标签在那里时不可见空间不足,无法显示整个文本。
  • @strudelPie 不客气。我认为您应该将此作为一个单独的问题发布。
  • 我应该补充一点,在代码中这样做可以正常工作,但 CSS 中的 '.segment-view' 没有。因为它是一个标签,实际上只有 '.Label' 样式类对我有用。只是为了清楚起见。
猜你喜欢
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 2018-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
  • 2015-04-27
相关资源
最近更新 更多