Shr*_*ave 1 java combobox javafx javafx-2 javafx-8
我正在尝试制作一个组合框,它具有从其项目中搜索匹配项的功能。
这是我所做的代码示例,
ObservableList<String> ab = FXCollections.observableArrayList("z", "asxdf", "abasdf", "bcasdf", "b", "bc", "bcd", "c");
final ComboBox box = new ComboBox(ab);
box.setEditable(true);
box.setOnKeyReleased(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent t) {
box.show();
for (String item : items) {
if (item.startsWith(box.getEditor().getText())) {
box.getSelectionModel().select(item); //which selects the item.
break;
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
现在的问题是box.getSelectionModel().select(item);选择在组合框中键入的特定项目,但我不想选择该项目,我只想将鼠标悬停在(聚焦)该项目上,就像鼠标悬停时一样。
谁能告诉我要替换的代码box.getSelectionModel().select(item);并帮助我解决这个问题。
您可以通过以下代码从 ComboBox 获取 ListView:
ListView<?> lv = ((ComboBoxListViewSkin) getSkin()).getListView();
Run Code Online (Sandbox Code Playgroud)
然后你就可以专注于该项目:
lv.getFocusModel().focus(N);
Run Code Online (Sandbox Code Playgroud)
或者只是滚动到它:
lv.scrollTo(N)
Run Code Online (Sandbox Code Playgroud)