JavaFX是否支持CSS中的正则表达式(或通配符)?
我曾尝试在JavaFXUI(TableView)的CSS选择器中使用通配符,但这似乎不起作用,尽管注意到它基于CSS 2.1版: JavaFX级联样式表(CSS)基于W3CCSS版本 2.1版本3的当前工作中添加了一些内容 例如:JavaFX是否支持CSS中的正则表达式(或通配符)?,java,css,regex,javafx,javafx-css,Java,Css,Regex,Javafx,Javafx Css,我曾尝试在JavaFXUI(TableView)的CSS选择器中使用通配符,但这似乎不起作用,尽管注意到它基于CSS 2.1版: JavaFX级联样式表(CSS)基于W3CCSS版本 2.1版本3的当前工作中添加了一些内容 例如: TableColumnHeader[id |=“column”]>标签 { -fx图形:url(“ico.png”); } 上面的CSS试图在TableView的所有列标题上显示图标“ico.png” TableColumnHeader是表的列标题节点的类型选择器
TableColumnHeader[id |=“column”]>标签
{
-fx图形:url(“ico.png”);
}
上面的CSS试图在TableView的所有列标题上显示图标“ico.png”
是表的列标题TableColumnHeader
节点的类型选择器
是在列标题中呈现的标签节点的样式类.label
与此处提到的示例类似:[id |=“column”]
- 列标题的
继承自其id
。TableColumn
在id
对象上设置如下:TableColumn
其中TableColumn.setId(“column-”+columnName)
是一个字符串变量columnName
[id=…]
的变体或id
以外的任何其他属性都不起作用
这是JavaFX中的一个限制吗?或者有什么方法可以让它工作吗?“列标题的
id
是从它的TableColumn
继承而来的”是否有文档记录?我从来没有听说过继承id
属性,或除xmlns之外的任何属性。在HTML和XML文档中,每个id
值在整个文档中都必须是唯一的;我不知道JavaFX是否强制实现了这种唯一性,但如果它没有,则#idvalue
选择器的有效性将受到影响。您好@VGR,不确定它是否有文档记录,但我查看了TableColumnHeader构造函数代码,并添加了调试代码以打印TableColumnHeader的ID。在构造函数:com.sun.javafx.scene.control.skin.TableColumnHeader
中,有一个调用setId(column.getId())代码>我在CSS参考中发现的唯一一件事是:“虽然JavaFX CSS解析器将解析有效的CSS语法,但它不是完全兼容的CSS解析器。人们不应该期望解析器处理本文档中未指定的语法。”。因此,大多数情况下,您不能使用匹配的属性。如果未记录对id
的复制,任何未来版本的JavaFX都可以免费删除它。另外,JavaFXCSS引擎似乎根本不识别id
属性(尽管它尊重#idvalue
符号)。即使它这样做了,|=
表示法期望将-
作为分隔符,因此id |=“column”
将匹配“column Date”,而不是“column Date”。出于所有这些原因,我想我会放弃使用CSS,只在代码中使用。谢谢@DVarga和@VGR。我将使用TableColumn
样式类,而不是id
,因为多个列可以共享同一个类,并且该类受CSS解析器支持。我认为id
被复制到TableColumnHeader
也是可以的,因为TableColumnHeader
是TableColumn
的呈现表示(以及组成表的其他节点),TableColumn
更像是列的逻辑定义。因此在最后,表中的一个节点(头)将具有id