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

能否通过CSS统一设置Composite及其子类的背景颜色?

SWT CSS 统一设置Composite及其子类背景色的解决方案

首先,你写的 .Foo Composite 只能选中类型为Composite的控件(也就是结构里那两个直接的Composite节点),不会自动匹配它的子类(比如Section、Combo这类继承自Composite的控件),所以达不到你要的统一设置效果。

要实现对Foo Shell下所有Composite及其子类(包括未知子类)的背景色设置,同时如果需要包含Canvas(它不继承Composite),可以用以下两种方案:

方案1:使用:super伪类匹配所有Composite子类

SWT CSS支持:super伪类,用来匹配所有继承自指定控件类的控件,包括类本身。写法如下:

.Foo Composite:super,
.Foo Canvas {
    background-color: #FF0000;
}

这个规则会选中:

  • 所有Foo Shell下的Composite控件
  • 所有继承自Composite的控件(比如Combo、Section等未知子类)
  • 所有Foo Shell下的Canvas控件

方案2:通过widgetClass属性匹配

每个SWT控件都有widgetClass属性,包含其完整类名。可以用属性选择器匹配所有类名以Composite结尾的控件(对应继承自Composite的类):

.Foo *[widgetClass$="Composite"],
.Foo Canvas {
    background-color: #FF0000;
}

这种写法同样能覆盖Composite及其所有子类,同时单独指定Canvas。

如果不需要包含Canvas,只需要Composite及其子类,去掉对应的.Foo Canvas规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:52:20