Можно ли сделать веб-апплет JavaFX? - PullRequest
8 голосов
/ 20 декабря 2011

Мне нравятся старые Java-апплеты.Но поскольку мне действительно нравится, как работает JFX, я хочу написать несколько игр, используя его (или даже систему создания игр, кто знает?), Но я бы хотел разместить их на своем веб-сайте.Как можно это сделать?

Ответы [ 2 ]

4 голосов
/ 01 ноября 2014

Да, вы можете встроить графический интерфейс JavaFX в основанный на Swing JApplet .Вы можете сделать это с помощью JFXPanel - по сути, это адаптер между панелями Swing и JavaFX.

Полный пример:
Класс FXApplet, которыйустанавливает графический интерфейс 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
    }
}

и тестовую реализацию для него:

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 , которыйтакже включает некоторую документацию.

4 голосов
/ 20 декабря 2011

Да, вы должны иметь возможность встраивать JavaFX в свою веб-страницу:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...