属性选择器如何在JavaFX中工作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了属性选择器如何在JavaFX中工作?相关的知识,希望对你有一定的参考价值。

JavaFX CSS Reference Guide,它明确表示

JavaFX级联样式表(CSS)基于W3C CSS版本2.1 [1],并在版本3 [2]上的当前工作中添加了一些内容。

在JCRG中,它们通常直接链接到W3C的CSS参考指南,当他们谈论选择器时就是这种情况。

在JCRG,他们提到Type SelectorsClass SelectorsID Selectors-他们甚至可以说他们don't support structural pseudo-classes-但没有任何关于Attribute Selectors的说法。

如果JavaFX支持它们,它们如何工作? JavaFX认为属性是什么?我认为CSS引擎可能会查看FXML中的属性,但并非所有场景图都来自FXML。

答案

FXML属性只是在相应的对象上设置属性。本身没有“属性选择器”,但是当且仅当设置了某些属性时,某些节点才会设置伪类(这些属性在您链接的参考指南中记录)。所以底线是没有直接等效的属性选择器,除非它们直接映射到伪类。

当然,请注意,如果需要基于属性支持CSS,则始终可以观察属性并设置/取消设置自定义伪类。因此,始终可以将属性选择器重新设置为伪类。

所以,例如假设您希望以不同的方式设置文本字段的样式(如果它具有"alignment=CENTER_RIGHT"属性)。你可以做到

TextField textField = new TextField();
PseudoClass rightAligned = PseudoClass.getPseudoClass("right-aligned");
textField.alignmentProperty().addListener((obs, oldAlignment, newAlignment) -> 
    textField.pseudoClassStateChanged(rightAligned, newAlignment == Pos.CENTER_RIGHT));

然后在你需要的CSS中

.text-field:right-aligned {
    /* style rules */
}

以上是关于属性选择器如何在JavaFX中工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用来自@mui/material 的样式使情感组件选择器在 nextjs 应用程序中工作?

Gtk.CssProvider() 基于 ID 的选择器如何在 Gtk3 中工作?

如何让 CSS 选择器在 Chrome 17 的开发者工具中工作?

数组语义初始化器如何在 C# 中工作?

“插槽激活器”如何在 vuetify 中工作?

当我从用户获取数据并将其保存到 SQLite 数据库中时,我应该怎么做才能使列表视图在片段中工作