使用SwingNode在视图中嵌入Swing组件

时间:2018-12-18 08:22:44

标签: android ios swing gluon

我目前正在评估Gluon,以将基于Swing的应用移植到移动android。 我以Gluon的hello-world为例(git clone https://github.com/gluonhq/hello-world.git) 我只是简单地介绍了SwingNode对象,以将Jcomponent传输到View构造函数中的View对象,如:

public BasicView() {
         // Création de l'UI Swing sur le thead EDT de AWT/Swing. 
        final SwingNode swingNode = new SwingNode();   
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                 initSwingUI(swingNode);
            }
        });

        StackPane pane = new StackPane(swingNode);
        pane.setAlignment(Pos.CENTER);
        setCenter(pane);

    }
    public void initSwingUI(final SwingNode swingNode) {
       JDesktopPane root = new JDesktopPane();
       JGlobalGlgBean globalBean = new JGlobalGlgBean(root);
       swingNode.setContent(root);

    }

它在Gluon模拟器(./gradlew运行)中完美运行。 在Android移动设备(./gradlew androidInstall)中启动(程序停止)时崩溃。 我使用adb查看了Android移动设备调试日志文件,发现: 12-18 09:12:44.205 12402 12434 W System.err:由以下原因引起: java.lang.NoClassDefFoundError:无法解决以下问题:Ljavafx / embed / swing / SwingNode。 实际上,如果我只在代码中保留SwingNode创建(基本上不执行任何操作),它也会崩溃。日志只是表明android lib不知道SwingNode。 我正在使用带有gluon gradle 4.7(JVM:1.8.0_191)的android-sdk-linux(android-28)。 android和gluon之间似乎存在一些版本不兼容? 有没有人已经嵌入了适用于android或ios设备的SwingNode代码?谢谢。

0 个答案:

没有答案