В настоящее время я оцениваю 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 устройства?Спасибо.