小编T-F*_*owl的帖子

Java:在轻量级中嵌入重量级组件(JavaFX SwingNode)

我一直在开发一个JavaFX应用程序,我需要将Applet嵌入其中.这个问题已被提出 ; 但是,就这个问题给出的答案是不够的.我无法访问applet,我只是将其从服务器(在这种情况下是游戏服务器)下载并尝试在桌面上作为我自己的自定义客户端运行它.所以我不能改变那方面的任何事情.我可以使用swing单独执行此操作,但在嵌入JavaFX应用程序的SwingNode时则不行.我花了几天时间阅读它并且我理解了无法将重量级组件放入SwingNode并依赖它们工作的问题.然而,当有遗嘱的时候总有办法.

我目前使用的代码:

@Override
public void start(Stage primaryStage) {
    primaryStage.setTitle("GameClient");

    //Game launcher
    Launcher launcher = new Launcher();

    SwingNode swingNode = new SwingNode();
    SwingUtilities.invokeLater(() -> swingNode.setContent(launcher.getGameClientWrappedInJPanel()));

    //HBox because I also want to add another component off to the side of the game
    Scene scene = new Scene(new HBox());
    ((HBox)scene.getRoot()).getChildren().add(swingNode);

    primaryStage.setScene(scene);
    primaryStage.sizeToScene();
    primaryStage.show();
}

public static void main(String[] args) {
    launch(args);
}
Run Code Online (Sandbox Code Playgroud)

此外,欢迎所有建议,但请记住,这是一个测试设置; 所以像启动器在构造函数中下载和初始化客户端这样的东西只是一个临时的工作.

长话短说,我想知道是否有人能够就如何处理这个问题给我任何建议.(基本上是在轻量级组件中正确渲染重量级的黑客攻击)我考虑在Swing中编写整体gui,并且只使用JFXPanels作为FX组件,但是如果有任何黑客攻击我可以用于我的原始目标; 它会更方便.

谢谢

- 托马斯

java embed applet javafx

5
推荐指数
0
解决办法
684
查看次数

标签 统计

applet ×1

embed ×1

java ×1

javafx ×1