javaFX AutoCompleteComboBox / AutoCompletionBinding 控件jar包下载
JavaFX 官方标准库里并没有“开箱即用”的 AutoComplete(自动补全)控件,但官方在 ControlsFX 这个扩展库里直接提供了 AutoCompleteComboBox / AutoCompletionBinding,一行代码就能给任意 ComboBox 或 TextField 加上自动补全。
如果你不想引第三方库,也可以自己用“可编辑 ComboBox + 过滤列表”实现,网上有现成源码可抄。下面把两种方案都列出来,你可以按项目需求选
一、最省事:直接用 ControlsFX(推荐)
-
加依赖
Maven
<dependency>
<groupId>org.controlsfx</groupId>
<artifactId>controlsfx</artifactId>
<version>11.1.2</version> <!-- 对应 JavaFX 17/19/20 -->
</dependency>
如果你还在用 JDK 8 + JavaFX 8,可以锁定 8.x 分支的最后版:
<dependency>
<groupId>org.controlsfx</groupId>
<artifactId>controlsfx</artifactId>
<version>8.40.18</version>
</dependency>
仓库url
https://repo1.maven.org/maven2/org/controlsfx/controlsfx/
_________________________
ComboBox<String> combo = new ComboBox<>();
combo.getItems().addAll("Apple", "Banana", "Blueberry", "Cherry");
// 自动补全立即生效
AutoCompletionBinding<String> binding = TextFields.bindAutoCompletion(
combo.getEditor(), combo.getItems());
支持模糊匹配、大小写忽略、自定义匹配规则、多列提示等,API 详情见 ControlsFX Javadoc。
二、零依赖:自己实现(100 行左右)
核心思路
-
把
ComboBox设成可编辑setEditable(true); -
监听
editor.textProperty(),按输入过滤items; -
用
FilteredList包装原始数据,避免来回clear()/addAll(); -
处理空格、上下箭头、弹出高度等细节。
社区里已经有人把这一套封装成通用工具类 AutoCompleteComboBox,直接复制即可使用,源码在 GitHub 高星仓库就能找到,例如 jesuino/javafx-combox-autocomplete 或 StackOverflow 上的完整实现 。
____________________________
结论
-
JavaFX 标准库没有 AutoComplete;
-
想“开箱即用”就 引入 ControlsFX,一分钟搞定;
-
不想加依赖就 抄现成源码,100 行左右也能跑得很好。
