package de.idos.ev; import de.idos.ev.client.base.presenter.ItemRenderer; import de.idos.ev.client.base.presenter.NullRenderer; import de.idos.ev.client.tradingcompany.presenter.Company; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.ComboBox; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; import javafx.stage.Stage; import javafx.util.Callback; public class ComboDemo extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) throws Exception { ComboBox box = new ComboBox(); RendererListCellFactory cellFactory = new RendererListCellFactory<>(); cellFactory.setRenderer(new ToStringRenderer()); box.setCellFactory(cellFactory); box.getItems().add("The Item"); stage.setScene(new Scene(box)); box.getSelectionModel().select(null); stage.show(); } private static class ToStringRenderer implements ItemRenderer { @Override public String displayAsString(Object o) { return o.toString(); } @Override public String displayPromptText() { return "Select"; } } public class RendererListCellFactory implements Callback, ListCell> { private ItemRenderer renderer = new NullRenderer<>(); @Override public ListCell call(ListView tListView) { return new RendererListCell<>(renderer); } public void setRenderer(ItemRenderer renderer) { this.renderer = renderer; } } public class RendererListCell extends ListCell { private ItemRenderer renderer; public RendererListCell(ItemRenderer renderer) { this.renderer = renderer; } @Override protected void updateItem(T t, boolean b) { super.updateItem(t, b); if (null == t) { setText(renderer.displayPromptText()); return; } setText(renderer.displayAsString(t)); } } }