Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX是否支持CSS中的正则表达式(或通配符)?_Java_Css_Regex_Javafx_Javafx Css - Fatal编程技术网

JavaFX是否支持CSS中的正则表达式(或通配符)?

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是表的列标题节点的类型选择器

我曾尝试在JavaFXUI(TableView)的CSS选择器中使用通配符,但这似乎不起作用,尽管注意到它基于CSS 2.1版:

JavaFX级联样式表(CSS)基于W3CCSS版本 2.1版本3的当前工作中添加了一些内容

例如:

TableColumnHeader[id |=“column”]>标签
{
-fx图形:url(“ico.png”);
}
上面的CSS试图在TableView的所有列标题上显示图标“ico.png”

  • TableColumnHeader
    是表的列标题
    节点的类型选择器
  • .label
    是在列标题中呈现的标签节点的样式类
  • [id |=“column”]
    与此处提到的示例类似:
  • 列标题的
    id
    继承自其
    TableColumn
    id
    TableColumn
    对象上设置如下:
    TableColumn.setId(“column-”+columnName)
    其中
    columnName
    是一个字符串变量
上面的CSS不起作用。任何包含
[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