【问题标题】:Is it possible to create java applets using JavaFx?是否可以使用 JavaFx 创建 Java 小程序?
【发布时间】:2016-10-03 10:00:48
【问题描述】:

我想使用 Javafx Scene Builder 创建一个小程序。我知道创建小程序的传统方式,但我最近开始使用 JavaFx,我喜欢使用 Scene Builder 创建出色的用户界面设计,然后编写整洁的自定义代码的方式。因此,到目前为止,我可以使用 JavaFx 创建桌面程序,但现在我想编写小型实用程序并将其嵌入到浏览器中。老实说,我不喜欢编写代码来创建 U.I.一个小程序,所以我在想是否有一种方法可以使用 Javafx 创建一个小程序。

P.S - 我是 Stackoverflow 的新手。所以,请原谅我犯的任何错误。

【问题讨论】:

标签: java javafx applet


【解决方案1】:

小程序是一种死技术,所以你应该完全忘记它们。至少在最新的 Chrome 浏览器中已经取消了对小程序的支持,而且很可能在其他浏览器中也是如此。

也不可能通过 JavaFX 创建小程序。

【讨论】:

  • 在技术上仍然可以创建 JavaFX 小程序,并且 Oracle 仍然提供tools 以使您能够这样做。但是,您completely correct 认为这是一种死技术,您应该寻找替代方法。
  • @James_D 我的错。我的印象是 JavaFX 从未扩展到 applet,因为它们已经处于弃用状态很长一段时间了。
【解决方案2】:

这要归功于JFXPanel,它允许将JavaFX 组件嵌入到Swing 组件中,您可以从Swing 组件轻松创建Applet

这是一个将Java FX Rectangle 绘制成Applet 的示例:

public class Main extends Applet {

    private void initAndShowGUI() {
        // This method is invoked on Swing thread
        final JFXPanel fxPanel = new JFXPanel();
        fxPanel.setPreferredSize(new Dimension(100, 100));
        add(fxPanel);
        setVisible(true);
        Platform.runLater(
            new Runnable() {
                @Override
                public void run() {
                    initFX(fxPanel);
                }
            }
        );
    }

    private static void initFX(JFXPanel fxPanel) {
        // This method is invoked on JavaFX thread
        final Scene scene = createScene();
        fxPanel.setScene(scene);
    }

    private static Scene createScene() {
        final Rectangle rectangle = new Rectangle(100.0, 100.0);
        rectangle.setFill(Color.BLACK);
        return new Scene(new VBox(rectangle));
    }

    @Override
    public void init() {
        SwingUtilities.invokeLater(
            new Runnable() {
                @Override
                public void run() {
                    initAndShowGUI();
                }
            }
        );
    }
}

但是小程序已经过时并且很快就会被删除,所以如果您可以避免使用它们,就不要使用它们。或者,您可以使用Deployment Toolkit library 将您的JavaFX application 嵌入网页或从浏览器启动它,有关此方法的更多详细信息here

【讨论】:

  • 但是您可以使用 JavaFX 创建小程序,而无需将它们嵌入 Swing。除非绝对必要,否则应避免混合使用这两个工具包。
  • @James_D 如果是,请提供答案,如果有更好的方法,我只能提出我知道的,我很乐意知道它
  • @Kayaman 提供了正确答案:Applet 在 Java 9 中将被弃用,您应该完全避免使用它们(使用 Swing 或使用 JavaFX)。我已经在该问题下方提供了一个link,用于为那些坚持忽略official position的人创建JavaFX Applet的工具。
  • @James_D 我已经检查了你的链接我看不到任何具体的解释如何做一个 JavaFX 小程序,所以你有更具体的链接要提供吗?除非你的意思是这个docs.oracle.com/javase/8/docs/technotes/guides/deploy/…?恕我直言,表明它已过时应该更多是评论,或者更糟糕的是答案中的 NB,而不是真正的答案。事实上,也许 OP 没有选择,所以知道它已经过时并没有多大帮助
  • 该指南中的每一章都涵盖了所有四个execution modes(1. 独立程序,2. Java Web Start,3. 嵌入在浏览器中,即小程序,以及 4. 自包含应用程序)。我完全不同意提供一个鼓励使用明确弃用的东西的答案:这类似于错误信息恕我直言。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 1970-01-01
  • 2021-01-26
  • 2017-11-26
相关资源
最近更新 更多