package combobox; import domain.ANumber; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.scene.Scene; import javafx.scene.control.ComboBox; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; import javafx.util.Callback; public class ComboBoxExample extends Application{ public static void main(String[] args){ launch(args); } @Override public void start(Stage stage) throws Exception { BorderPane pane = new BorderPane(); ComboBox<ANumber> comboBox = new ComboBox<>(); Callback<ListView<ANumber>, ListCell<ANumber>> cellFactory = new Callback<ListView<ANumber>, ListCell<ANumber>>() { @Override public ListCell<ANumber> call(ListView<ANumber> aNumberListView) { return new ListCell<ANumber>(){ @Override protected void updateItem(ANumber aNumber, boolean b) { super.updateItem(aNumber, b); if(null == aNumber) return; setText(aNumber.doubleProperty().getValue().toString()); } }; } }; comboBox.setButtonCell(cellFactory.call(null)); comboBox.setCellFactory(cellFactory); comboBox.setItems(FXCollections.observableArrayList(new ANumber(2.1), new ANumber(2.2))); pane.setCenter(comboBox); stage.setScene(new Scene(pane)); stage.show(); } }