javafx + controlsfx glyphicon - .text设置为font-weight时的意外行为:粗体

时间:2017-10-25 11:20:09

标签: javafx javafx-8 controlsfx

我正在使用带有ControlsFX Glyph图标的JavaFX和fontawesome。

它与默认的JavaFX Modena主题很好地配合使用。

但是当我添加yellowOnBlack CSS以获得高对比度时,图标会变成奇怪的字体形状。

Glyph源代码显式设置了我传递“FontAwesome”的字体系列。它通过Label.setFontFamily()设置。

控制在摩德纳看起来像这样:

ToggleButton[id=btnHamburger, styleClass=toggle-button]''
    Glyph@72cc2cbd[styleClass=label glyph-font]''
        Text[text="", x=0.0, y=0.0, alignment=LEFT, origin=BASELINE, boundsType=LOGICAL_VERTICAL_CENTER, font=Font[name=FontAwesome, family=FontAwesome, style=Regular, size=14.0], fontSmoothingType=LCD, fill=0x333333ff]

当我添加yellowOnBlack时,它看起来像这样:

ToggleButton[id=btnHamburger, styleClass=toggle-button]''
    Glyph@3bd84c6d[styleClass=label glyph-font]''
        Text[text="", x=0.0, y=0.0, alignment=LEFT, origin=BASELINE, boundsType=LOGICAL_VERTICAL_CENTER, font=Font[name=System Regular, family=System, style=Regular, size=12.0], fontSmoothingType=LCD, fill=0xffff00ff]

它覆盖了font-family,这很奇怪,因为它是通过.setFontFamily()设置的。

那是因为yellowOnBlack设置了这个CSS:

.text,
.text-input {
    -fx-font-weight: bold;
}

如果我这样做,它会起作用:

.glyph-font .text {
    -fx-font-weight: normal;
    -fx-font-family: "FontAwesome";
}

但是我无法将-fx-font-family修复为“FontAwesome”,因为它在Glyph构造函数上是可选的。

修复它的任何其他想法?

感谢。

2 个答案:

答案 0 :(得分:0)

我创建了一个子类并覆盖了setFontFamily():

tree["columns"] = ("one", "two", "three")
tree.column("one", width=150)
tree.column("two", width=150)
tree.column("three", width=150)
tree.heading("one", text="Naar")
tree.heading("two", text="Spoor")
tree.heading("three", text="Vetrektijd")
tree['show'] = 'headings'

有效。不是最好的解决方案。

答案 1 :(得分:0)

我最近偶然发现了同样的问题。就我而言,从字形对象中删除“标签”样式类就足够了:

glyph.getStyleClass().remove("label");

因此,我的样式规则(其中设置了一些字体属性)都没有应用到该字形上,无法正确显示图标。