import javafx.application.Application; import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.collections.transformation.FilteredList; import javafx.scene.Scene; import javafx.scene.control.ComboBox; import javafx.scene.control.TextField; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class Main extends Application { public void start(Stage stage) { HBox root = new HBox(); ComboBox prim = new ComboBox(); prim.setEditable(true); ComboBox sec = new ComboBox(); sec.setEditable(true); ObservableList itemsPrim = FXCollections.observableArrayList("Ahh", "Bhh", "Chh", "Dhh", "Ehh", "Fhh", "Ghh", "Hhh", "Ihh", "Jhh"); ObservableList itemsSec = FXCollections.observableArrayList("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten"); FilteredList filteredItems = new FilteredList(itemsSec, p -> true); prim.getEditor().textProperty().addListener((obs, oldValue, newValue) -> { final TextField editor = prim.getEditor(); final String selected = prim.getSelectionModel().getSelectedItem(); Platform.runLater(() -> { if (selected == null || !selected.equals(editor.getText())) { filteredItems.setPredicate(item -> { if (item.toUpperCase().startsWith(newValue.toUpperCase())) { return true; } else { return false; } }); } }); }); prim.setItems(filteredItems); sec.setItems(itemsPrim); root.getChildren().add(prim); root.getChildren().add(sec); Scene scene = new Scene(root); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(); } }