我读过AutoComplete ComboBox in JavaFX,但最热门投票的答案使用了Lambda表达式。
在我的项目中,我无法使用它们,所以我想问一下是否有人可以提供没有lambda表达式的代码。
以下是使用lambda表达式的代码的两部分:
1)
comboBox.getEditor().focusedProperty().addListener(observable -> {
if (comboBox.getSelectionModel().getSelectedIndex() < 0) {
comboBox.getEditor().setText(null);
}
});
2)
comboBox.addEventHandler(KeyEvent.KEY_PRESSED, t -> comboBox.hide());
答案 0 :(得分:1)
您的IDE应该能够来回转换。下面是在Eclipse中使用它的示例。
1)
comboBox.getEditor().focusedProperty().addListener(new InvalidationListener() {
@Override
public void invalidated(Observable observable) {
if (comboBox.getSelectionModel().getSelectedIndex() < 0) {
comboBox.getEditor().setText(null);
}
}
});
2)
comboBox.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent t) {
comboBox.hide();
}
});
希望有所帮助。
答案 1 :(得分:1)
If you're willing to use external libraries, you can make an autocompleting ComboBox with just a few lines of code using ControlsFX.
ComboBox<String> comboBox = new ComboBox<>();
comboBox.getItems().addAll("Hello", "Hello World", "Hey");
comboBox.setEditable(true);
TextFields.bindAutoCompletion(comboBox.getEditor(), comboBox.getItems());