没有Lambda表达式的JavaFX中的AutoComplete ComboBox

时间:2017-03-24 16:54:35

标签: java lambda combobox javafx-8

我读过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());

2 个答案:

答案 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());

controlsFX autocomplete box