You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaFX中用通配符/正则匹配动态数量的ID选择器?

JavaFX中使用通配符/属性选择器匹配动态ID节点

嘿,刚好我对JavaFX的CSS选择器这块比较熟,来给你说清楚怎么实现你要的需求!

JavaFX的CSS是支持属性选择器的,和你在HTML里用的div[id^='id']这类写法逻辑一致,完全可以用来匹配一批ID符合特定规则的节点,不用一个个写#id1, #id2这种繁琐的选择器。下面是具体的用法:

常用的通配符式匹配规则

针对ID的匹配,你可以用以下几种属性选择器语法:

  • 匹配ID以指定字符串开头的节点:用^=符号。比如要匹配所有ID以id开头的节点,写法是:

    #*[id^='id'] {
        /* 你的样式代码 */
        -fx-background-color: lightcoral;
        -fx-border-color: black;
    }
    

    这里的#*表示匹配所有带有ID属性的节点,如果你的目标节点都是特定类型(比如Label、Button),可以把#*换成具体的元素类型,比如Label[id^='id'],这样更精准,避免误匹配其他类型的节点。

  • 匹配ID包含指定字符串的节点:用*=符号。比如要匹配所有ID里包含item的节点:

    #*[id*='item'] {
        -fx-padding: 8px;
        -fx-font-size: 14px;
    }
    
  • 匹配ID以指定字符串结尾的节点:用$=符号。比如要匹配所有ID以-container结尾的节点:

    #*[id$='-container'] {
        -fx-background-color: #f0f0f0;
    }
    

注意事项

  • 匹配是区分大小写的:如果你的ID是ID123,那[id^='id']是匹配不到的,必须写成[id^='ID']才能对应上。
  • 这些选择器可以直接写在你的.css样式文件里,和普通的JavaFX CSS一样加载使用,不需要额外的代码处理,完全靠样式规则就能批量匹配动态生成的ID节点。

举个实际的例子:假设你动态生成了一批Button,它们的ID分别是idBtn_01、idBtn_02、idBtn_03...,你想给它们统一设置样式,就可以在CSS里写:

Button[id^='idBtn_'] {
    -fx-text-fill: white;
    -fx-background-color: #2c3e50;
    -fx-border-radius: 4px;
}

这样所有符合ID规则的Button都会自动应用这个样式,不用管具体有多少个节点。

内容的提问来源于stack exchange,提问作者c0der

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:33:35