2011-12-19 4 views

Odpowiedz

4

Tak, można osadzić JavaFX GUI w Swing oparte JApplet. Możesz to zrobić za pomocą JFXPanel - jest to w zasadzie adapter między panelami Swing i JavaFX.

Kompletny przykład:
Klasa FXApplet że ustawia się GUI JavaFX:

public class FXApplet extends JApplet { 
    protected Scene scene; 
    protected Group root; 

    @Override 
    public final void init() { // This method is 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) { // This method is invoked on JavaFX thread 
     root = new Group(); 
     scene = new Scene(root); 
     fxPanel.setScene(scene); 
    } 

    public void initApplet() { 
     // Add custom initialization code here 
    } 
} 

oraz wdrożenia testowego dla niego:

public class MyFXApplet extends FXApplet { 
    // protected fields scene & root are available 

    @Override 
    public void initApplet() { 
     // this method is called once applet has been loaded & JavaFX has been set-up 

     Label label = new Label("Hello World!"); 
     root.getChildren().add(label); 

     Rectangle r = new Rectangle(25,25,250,250); 
     r.setFill(Color.BLUE); 
     root.getChildren().add(r); 
    } 
} 

Alternatywnie, można użyć FXApplet gist , która obejmuje również pewną dokumentację.