如何仅更改javafx css

时间:2016-07-22 13:57:36

标签: css javafx

我已经使用了很多html + css,但我对javafx + css完全不熟悉。所以这将是一个新手问题,但我无法在任何地方找到答案。

我有一个大型的GridPane标签(除了其他标签)。我可以为所有这些标签设置填充,如:

GridPane.containerLevel02 Label {
    -fx-padding: 0 0 0 5;
}

这很有效。我希望某些标签更加缩进所以我创建了" leftIndent"为他们上课:

GridPane.containerLevel02 Label.leftIndent {
    -fx-padding: 0 0 0 20;
}

这也有效。

但是,我不想在那里指定三个零,因为如果我决定一般将标签添加到标签的顶部/底部,它不会影响" leftindent上"标签

我正在寻找的是:

GridPane.containerLevel02 Label.leftIndent {
    -fx-padding-left: 20;
}

...喜欢"正常" CSS或......

GridPane.containerLevel02 Label.leftIndent {
    -fx-padding: null null null 20;
}

...或任何可以让我指定左侧填充,使顶部,右侧和底部填充不受任何当前值的影响

这可能吗?的谢谢!

1 个答案:

答案 0 :(得分:8)

由于JavaFX不提供-fx-padding-left或类似的,我认为最简单的解决方法是使用变量。例如:

.root {
  LABEL_PADDING_TOP: 0;
  LABEL_PADDING_RIGHT: 0;
  LABEL_PADDING_BOTTOM: 0;
  LABEL_PADDING_LEFT: 5;
}

GridPane.containerLevel02 Label {
    -fx-padding: LABEL_PADDING_TOP LABEL_PADDING_RIGHT LABEL_PADDING_BOTTOM LABEL_PADDING_LEFT;
}

GridPane.containerLevel02 Label.leftIndent {
    -fx-padding: LABEL_PADDING_TOP LABEL_PADDING_RIGHT LABEL_PADDING_BOTTOM 20;
}

它仍然要求您覆盖在某些用例中可能不需要的所有值,但至少您必须在一个地方指定默认值。