在 FXML 和 CSS 中设置属性

Setting attributes both in FXML and in CSS

如果我试图在 FXML 和 CSS 中的 class 定义中设置相同的属性,我希望 FXML 中设置的属性被认为比 CSS.

例如,如果我有一个控件,例如

<Label styleClass="myLabel" prefHeight="40.0">

同时还有一个CSS定义,例如

Label.myLabel {
    -fx-pref-height: 100px;
}

我希望标签的高度为 40 像素。相反,它有 100 像素。 有没有办法让 FXML 中的属性具有优先权?

在(到目前为止)没有合格答案的情况下,我只能猜测:

虽然可以预期 FXML 属性与内联样式定义具有大致相同的特异性,但它们没有任何关系。

这是评估顺序的原因:FXML 属性的评估时间早于 CSS 定义,并且完全独立于 CSS 定义。这就是 CSS 定义完全覆盖属性定义,使它们过时的原因。


现在就多猜了:Here刚刚发现优先顺序是

  1. a style from a user agent stylesheet in Application.setUserAgentStylesheet(java.lang.String)
  2. value set from code, for example calling Node.setOpacity(double)
  3. a style from an author stylesheet in Scene.getStylesheets() or Parent.getStylesheets()
  4. a style from Node.setStyle(java.lang.String)

假设在 FXML 中预先设置的值等同于代码设置的值。