package de.gebit.thilo; import javafx.application.Application; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.concurrent.Service; import javafx.concurrent.Task; import javafx.concurrent.WorkerStateEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.ChoiceBox; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class Example2App extends Application { @Override public void start(Stage primaryStage) throws Exception { primaryStage.setTitle("Example 2"); final ChoiceBox choiceBox = new ChoiceBox<>(); ExampleService service = new ExampleService(); service.setOnSucceeded(new EventHandler() { @Override public void handle(WorkerStateEvent aEvent) { ObservableList tempValue = (ObservableList) aEvent.getSource().getValue(); choiceBox.setItems(tempValue); } }); service.start(); StackPane root = new StackPane(); root.getChildren().add(choiceBox); primaryStage.setScene(new Scene(root, 300, 250)); primaryStage.show(); } /** * @param args */ public static void main(String[] args) { launch(args); } public class ExampleService extends Service> { @Override protected Task> createTask() { return new ExampleTask(); } } public class ExampleTask extends Task> { @Override protected ObservableList call() throws Exception { ObservableList tempResult = FXCollections.observableArrayList(); for (int i = 0; i < 10; i++) { tempResult.add("Item " + i); } System.out.println("Task ended."); return tempResult; } } }