是否可以制作JavaFX Web applet?

Dar*_*ski 8 java applet javafx

我喜欢旧的Java小程序.但是因为我非常喜欢JFX的工作方式,我想用它来写一些游戏(甚至是游戏制作系统,谁知道?),但我希望能够在我的网站上发布它们.怎么会这样做呢?

muc*_*aho 5

是的,您可以将 JavaFX GUI 嵌入到基于 Swing 的JApplet中。您可以使用JFXPanel来完成此操作- 它本质上是 Swing 和 JavaFX 面板之间的适配器。

完整示例:设置 JavaFX GUI 的类
FXApplet

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
    }
}
Run Code Online (Sandbox Code Playgroud)

以及它的测试实现:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用FXAppletgist,其中还包含一些文档。


Puc*_*uce 4

是的,您应该能够将 JavaFX 嵌入您的网页中:

http://docs.oracle.com/javase/8/docs/technotes/guides/deploy/deployment_toolkit.html#BABJHEJA

http://docs.oracle.com/javase/8/javase-clienttechnologies.htm

  • 举个例子也没什么坏处。如果链接不起作用怎么办? (4认同)