Chciałem pobawić się SwingNode w JavaFX i z tej okazji stwierdziłem, że zrobię odpowiednik swingowego JDesktopPane.

Dla testu skopiowałem kod z tutoriala Oracla, wszystko działało ok, przycisk się wyświetlał. Co ciekawe, nie od razu - aby w ogóle się pokazał, musiałem najpierw najechać myszką na miejsce, w którym się znajdował.

Później chciałem sprawdzić, czy Swingowe LookAndFeel również działają. Dodanie UIManager.setLookAndFeel(new NimbusLookAndFeel()); faktycznie zmieniło mi LAF na Nimbusa, a więc działa.

Później dodałem JDesktopPane w miejscu JButton i nic się nie wyświetliło, podczas gdy domyślnie w JDesktopPane pojawia się niebieskie tło. Najechanie kursorem na miejsce, w którym powinno pojawić się JDesktopPane - lewy górny róg, jak wynika z obserwacji z przyciskiem - nic nie dało. Stwierdziłem, że może to wina tego, że domyślne JDesktopPane ma rozmiar zero (?), więc ustawiłem mu rozmiar na 500x500, a nawet dodałem JInternalPane do środka. Nic to nie dało.

Ma ktoś jakiś pomysł?
Niżej załączam cały, kompletny kod programu.

public class Start extends Application {
    public static void main(String[] args) throws Exception {
        UIManager.setLookAndFeel(new NimbusLookAndFeel());
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        final SwingNode swingNode = new SwingNode();
        createSwingContent(swingNode);
        VBox box = new VBox();
        box.getChildren().addAll(swingNode);
        primaryStage.setScene(new Scene(box));
        primaryStage.setTitle("Tester");
        primaryStage.show();
    }

    private void createSwingContent(final SwingNode swingNode) {
        SwingUtilities.invokeLater(() -> {
            JDesktopPane jdp = new JDesktopPane();
            JInternalFrame frame = new JInternalFrame("tester", true, true, true, true );
            frame.setSize(200, 200);
            frame.setVisible(true);
            jdp.add(frame);
            swingNode.setContent(jdp);
        });
    }
}