2011-12-19 19 views
8

Me gustan los antiguos applets de Java. Pero como realmente me gusta la forma en que funciona JFX, quiero escribir algunos juegos para usarlo (o incluso para crear un juego, ¿quién sabe?), Pero me gustaría poder publicarlos en mi sitio web. ¿Cómo podría uno hacer esto?¿Es posible crear un applet web JavaFX?

Respuesta

4

Sí, puede incrustar una GUI JavaFX en el JApplet basadas en Swing. Puede hacerlo utilizando el JFXPanel, es esencialmente un adaptador entre los paneles Swing y JavaFX.

Ejemplo completo:
La clase FXApplet que fija en marcha la 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 
    } 
} 

Y una aplicación de prueba para ello:

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); 
    } 
} 

Como alternativa, puede utilizar el FXApplet gist , que también incluye cierta documentación.

Cuestiones relacionadas