将焦点设置在组合框的特定项目上而不选择它

时间:2013-06-24 06:49:29

标签: java combobox javafx-2 javafx javafx-8

我正在尝试制作一个ComboBox,其功能是从其项目中搜索匹配。

以下是我所做的代码示例

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;
         }
      }
   }
});

现在问题是box.getSelectionModel().select(item);选择在ComboBox中输入的特定项目,但我不想选择该项目,我只想悬停在(专注于)该项目上,就像鼠标悬停时一样

任何人都可以告诉我用box.getSelectionModel().select(item);替换的代码并帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

回复晚,但直到今天我才将漏洞应用程序从Swing迁移到FX后才遇到该问题。我正在使用Java8。(仍然)

这就是我的工作方式。希望能对仍然有此问题的人有所帮助。

public class MyComboBox extends ComboBox<String> {
    public EditorComboBox() {

        // this event is created when the internal listView is displayed
        setOnShowing(event -> {
            ComboBoxListViewSkin<?> skin = (ComboBoxListViewSkin<?>)getSkin();
            if (skin != null) {
                ((ListView<?>) skin.getPopupContent()).scrollTo(getSelectionModel().getSelectedIndex());
            }
        });
    }
}