【问题标题】:How to only change left padding in javafx css如何仅更改javafx css中的左填充
【发布时间】:2016-07-22 13:57:35
【问题描述】:

我经常使用 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;
}

...或任何可以让我指定左侧填充,使顶部、右侧和底部填充保持不变的任何值

这可能吗? 谢谢!

【问题讨论】:

  • 感谢您的快速评论,但这似乎是他们在那里解决的另一个问题。
  • AFAIK 如果没有自定义皮肤,这是不可能的,因为它是 StyleableProperty<Insets> 并且需要从单个规则中分配,并且 afaik 不可能将多个变量组合到一个 <size> 元素。
  • 好吧,我没这么看。我想我对“正常”的 CSS 有偏见。我将不得不做一些阅读和测试以了解它是如何工作的。无论如何感谢您的意见!

标签: css javafx


【解决方案1】:

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

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

【讨论】:

  • 不如-fx-padding-left那么好,但对于我的用例来说绝对足够好!谢谢!
猜你喜欢
  • 2019-07-14
  • 2020-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
  • 1970-01-01
  • 2018-03-14
相关资源
最近更新 更多