Использование SwingNode для встраивания компонента Swing в View - PullRequest
0 голосов
/ 18 декабря 2018

В настоящее время я оцениваю Gluon для переноса приложения на базе Swing на мобильный Android.Я взял пример hello-world от Gluon (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 run). Он вылетает при запуске (программа остановлена) на мобильном устройстве Android (./gradlew androidInstall). Я посмотрел файл журнала отладки мобильного устройства Android с помощью adb и обнаружил, что: 12-18 09: 12: 44.205 12402 12434 W System.err: Причина: java.lang.NoClassDefFoundError: Ошибка разрешения: Ljavafx / embed / swing / SwingNode. На самом деле, если я оставлю в коде только SwingNodeсоздание (в основном ничего не делая с ним), это также дает сбой. В журнале просто указывается, что android lib не знает о SwingNode. Я использую android-sdk-linux (android-28) с глюонным gradle 4.7 (JVM: 1.8.0_191.) Похоже, что между android и глюоном есть несовместимость версий? Кто-нибудь уже внедрил код SwingNode, работающий дляAndroid или Ios устройства?Спасибо.

...