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

ControlsFX 11.1.2 SearchableComboBox样式失效:聚焦状态不生效

解决ControlsFX 11.1.2 SearchableComboBox样式不生效问题

问题原因

ControlsFX的SearchableComboBox内部结构和标准JavaFX ComboBox不同,输入区域是独立的TextField,焦点状态作用在这个内部文本框上,而非外层容器。同时原样式选择器的层级关系错误,导致样式无法匹配到目标组件。

修正后的样式代码

/* 外层容器基础样式 */
.searchable-combo-box {
    -fx-background-color: transparent;
    -fx-background-insets: 0;
    -fx-background-radius: 0;
    -fx-border-width: 0 0 1 0;
    -fx-border-color: #053445;
    -fx-border-radius: 0;
}

/* 内部文本框基础样式 */
.searchable-combo-box .text-field {
    -fx-background-color: transparent;
    -fx-background-insets: 0;
    -fx-background-radius: 0;
    -fx-text-fill: black;
    -fx-prompt-text-fill: gray;
}

/* 文本框聚焦时的自身样式 */
.searchable-combo-box .text-field:focused {
    -fx-background-color: transparent;
    -fx-background-insets: 0;
    -fx-background-radius: 0;
}

/* 内部文本框聚焦时,外层容器的边框样式 */
.searchable-combo-box:focus-within {
    -fx-border-color: #1291bf;
}

关键调整说明

  • 移除原错误的.searchable-combo-box .combo-box-base层级:SearchableComboBox不包含标准的combo-box-base节点,直接选择.text-field即可匹配内部输入框。
  • 使用:focus-within伪类:当内部文本框获得焦点时,外层容器会触发该状态,以此实现聚焦时的边框颜色变化。
  • 将-fx-prompt-text-fill移至.text-field样式:提示文本是内部文本框的属性,外层容器无法直接控制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:42:38