在 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刚刚发现优先顺序是
- a style from a user agent stylesheet in
Application.setUserAgentStylesheet(java.lang.String)
- value set from code, for example calling
Node.setOpacity(double)
- a style from an author stylesheet in
Scene.getStylesheets()
or Parent.getStylesheets()
- a style from
Node.setStyle(java.lang.String)
假设在 FXML 中预先设置的值等同于代码设置的值。
如果我试图在 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刚刚发现优先顺序是
- a style from a user agent stylesheet in
Application.setUserAgentStylesheet(java.lang.String)
- value set from code, for example calling
Node.setOpacity(double)
- a style from an author stylesheet in
Scene.getStylesheets()
orParent.getStylesheets()
- a style from
Node.setStyle(java.lang.String)
假设在 FXML 中预先设置的值等同于代码设置的值。