在FXML和CSS中设置属性
如果我试图在FXML和CSS中的类定义中设置相同的属性,我希望FXML中设置的属性比CSS中设置的属性更具体 例如,如果我有一个控件,例如在FXML和CSS中设置属性,css,javafx,java-8,fxml,Css,Javafx,Java 8,Fxml,如果我试图在FXML和CSS中的类定义中设置相同的属性,我希望FXML中设置的属性比CSS中设置的属性更具体 例如,如果我有一个控件,例如 <Label styleClass="myLabel" prefHeight="40.0"> 我希望标签的高度为40像素。相反,它有100像素。 有没有办法使FXML中的属性具有优先级?在(到目前为止)没有限定答案的情况下,我只能猜测: 虽然可以预期FXML属性与内联样式定义具有大致相同的特性,但它们之间没有任何关系 其原因是计算顺序:FXML
<Label styleClass="myLabel" prefHeight="40.0">
我希望标签的高度为40像素。相反,它有100像素。
有没有办法使FXML中的属性具有优先级?在(到目前为止)没有限定答案的情况下,我只能猜测:
虽然可以预期FXML属性与内联样式定义具有大致相同的特性,但它们之间没有任何关系
其原因是计算顺序:FXML属性的计算时间早于CSS定义,并且完全独立于CSS定义。这就是为什么CSS定义会完全覆盖属性定义,使它们过时
现在这不仅仅是猜测:我刚刚发现优先顺序是
Application.setUserAgentStylesheet(java.lang.String)
Node.setOpacity(double)
Scene.getStylesheets()或Parent.getStylesheets()中作者样式表的样式
Node.setStyle(java.lang.String)
假设在FXML中预先设置的值相当于从代码中设置的值。在HTML中,浏览器只需将表示属性映射到CSS规则,其特异性低于*规则。这允许浏览器单独使用CSS实现所有布局,同时始终允许作者使用CSS覆盖表示属性。另一方面,不可能强制表示属性重写CSS规则。根据CSS在JavaFX中的实现方式,FXML可能是这样,也可能不是这样。如果映射到“浏览器域”,这确实是需要的行为?所以在FXML中可能是相同的。谢谢你的来信!我想说,它们介于浏览器和作者域之间——比任何浏览器默认设置更具体,而比作者CSS(包括外部链接、内联样式)更不具体。
Label.myLabel {
-fx-pref-height: 100px;
}