I am currently trying to create a Stage in a background thread using the Task<Stage> object, which is not working, because the Task never finishes. 
Here is my code:
Task<Stage> myTask = new Task<Stage>() {
    @Override
    protected Stage call() throws Exception {
        Stage stage = new Stage();
        return stage;
    }
};
myTask.setOnSucceeded(e -> {
    System.out.println("done :D");
});
 myTask.setOnFailed(e -> {
    System.out.println("oh no");
    myTask.getException().printStackTrace();
});
new Thread(myTask).start();
The method above prints oh no and following exception message:
java.lang.IllegalStateException: Not on FX application thread; currentThread = Thread-5
at com.sun.javafx.tk.Toolkit.checkFxUserThread(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(Unknown Source)
at javafx.stage.Stage.<init>(Unknown Source)
at javafx.stage.Stage.<init>(Unknown Source)
at controller.ManageWebsiteTestsWindowController$OpenButton$1.call(ManageWebsiteTestsWindowController.java:77)
at controller.ManageWebsiteTestsWindowController$OpenButton$1.call(ManageWebsiteTestsWindowController.java:1)
at javafx.concurrent.Task$TaskCallable.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
When I use the same code to create a e.g. Label, it works perfectly fine:
Task<Label> myTask = new Task<Label>() {
    @Override
    protected Label call() throws Exception {
        Label label = new Label("Hello World");
        return label;
    }
};
myTask.setOnSucceeded(e -> {
    System.out.println("done :D");
});
myTask.setOnFailed(e -> {
    System.out.println("oh no");
    myTask.getException().printStackTrace();
});
new Thread(myTask).start();
What am I doing wrong?
Some background information: I am trying to create a Popout object which extends Stage.
