从样式表中的规则解析'-fx-background-color'的查找时无法解析'-fx-tab-border-color'

时间:2016-07-18 08:30:20

标签: css javafx javafx-8 javafx-css

由于我的规则已经到位,但却无法无意中得到这些错误。我试图了解网络上可用的解决方案,但它们都不适合我。

Jul 18, 2016 1:39:17 PM javafx.scene.CssStyleHelper calculateValue WARNING: Could not resolve '-fx-tab-border-color' while resolving lookups for '-fx-background-color' from rule '*.tab-pane>*.tab-header-area>*.control-buttons-tab' in stylesheet file ***style.css***

上面提到的和许多类似的警告,由于某些组件无法正确加载。使用Java1.8.0_66。

我的css文件中的

root就像:

.root {

    -fx-base: #d0d0d0;

    -fx-background: #f4f4f4;

    -fx-control-inner-background: white;
    -fx-font-family:"Courier";
    -fx-font-size: 12;

    -fx-dark-text-color: black;
    -fx-mid-text-color: #292929;
    -fx-light-text-color: white;

    -fx-accent: #0093ff;

    -fx-focus-color: #0093ff;

    -fx-color: -fx-base;

    -fx-disabled-opacity: 0.9;

    -fx-hover-base: ladder(
        -fx-base,
        derive(-fx-base,20%) 20%,
        derive(-fx-base,30%) 35%,
        derive(-fx-base,40%) 50%
     );

    -fx-pressed-base: derive(-fx-base,-20%);

    -fx-focused-base: -fx-base;

    -fx-tab-border-color: -fx-box-border;

    -fx-background-color: inherit;
    -fx-background-radius: inherit;
    -fx-background-insets: inherit;
    -fx-padding: inherit;

    -fx-cell-hover-color: #cce3f4;

    -fx-cell-focus-inner-border: #85b9de;

    -fx-page-bullet-border: #acacac;    
    -fx-page-indicator-hover-border: #accee5;   
}

,用于:

.tab-pane > .tab-header-area > .control-buttons-tab {
    -fx-background-color: -fx-tab-border-color, -fx-inner-border, -fx-body-color;
    -fx-background-insets: 0, 1, 2;
    -fx-background-radius: 5 5 0 0, 4 4 0 0, 3 3 0 0;
    -fx-padding: 0.083333em 0.25em 0.083333em 0.25em; /* 1 3 1 3 */
}

是相同的css文件。

提前致谢!!

2 个答案:

答案 0 :(得分:3)

我最近也遇到过这个问题。什么' RAM World'如果Node不是根元素,但仍在访问root块中的预定义值,则会出现此问题。一个简单的解决方案是扩大选择器的范围,以便javafx可以找到预定义的值。 e.g;

.root > *
{
    /* add your predefined values here */
}

在这种情况下,它选择root和它的每个(嵌套)子项。我发现这种表示法,因为它表明这些是根属性/值。如果您想要最短的符号,以下内容也可以使用:

*
{
    /* add your predefined values here */
}

在这种情况下,它会选择每个Node

虽然这是一篇很老的帖子,但希望这对某人有帮助。

修改

不要使用第一种方法(root > *)!当使用动态根时,javafx仍然会抱怨未解决的规则/属性。只有第二种方法(*)没有错误地为我工作

答案 1 :(得分:0)

问题是为启动应用程序而编写的java代码不是根元素,Parent嵌套在Pane中。这就是为什么它能够解析CSS,这只能在FX8中看到,因为在javafx2.2中,对于应用 css ,它不是强制性的 Parent < / strong>是实际的根元素。如果Parent不是根元素,它在JavaFx2.2中工作正常。