Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在FXML和CSS中设置属性_Css_Javafx_Java 8_Fxml - Fatal编程技术网

在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

如果我试图在FXML和CSS中的类定义中设置相同的属性,我希望FXML中设置的属性比CSS中设置的属性更具体

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

<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;
    }