
import javax.swing.*;
import javafx.embed.swing.*;
import javafx.scene.*;
import javafx.application.*;

/** Example with JFXPanel. */
public class FXApplet extends JApplet {
 
   private static final long serialVersionUID = 6012167652575863206L;
   
   protected Scene scene;
   protected Group root;

    @Override
    public final void init() { // invoked when applet is loaded
        SwingUtilities.invokeLater (new Runnable() {
            @Override
            public void run() {
                initSwing();
            }
        });
    }

    private void initSwing() { // This method is invoked on Swing thread
        final JFXPanel fxPanel = new JFXPanel();
        add (fxPanel);

        Platform.runLater (new Runnable() {
            @Override
            public void run() {
                initFX (fxPanel);
                initApplet();
            }
        });
    }

    private void initFX (JFXPanel fxPanel) { // invoked on JavaFX thread
        root = new Group();
        scene = new Scene (root);
        fxPanel.setScene (scene);
    }

    public void initApplet() {
        // Add custom initialization code here, init is occupied
    }

}

