【问题标题】:Is it possible to make JavaFX web applet?是否可以制作 JavaFX 网络小程序?
【发布时间】:2025-12-28 09:25:17
【问题描述】:

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

【问题讨论】:

    标签: java applet javafx


    【解决方案1】:

    是的,您可以将 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
        }
    }
    

    还有一个测试实现:

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

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

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 举个例子也无妨。如果链接不起作用怎么办?
      最近更新 更多