Странное приложение javafx выглядит на андроиде

У меня проблема с моим портированным приложением javafx на Android. После первого запуска это выглядит так:

Но когда я перехожу на главный экран, а затем возвращаюсь в приложение, все выглядит так, как должно быть.

построить.градле:

buildscript {
    repositories {
         mavenCentral()
        maven {
      url "https://plugins.gradle.org/m2/"
      url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
    }
    }
    dependencies {
        classpath 'org.javafxports:jfxmobile-plugin:1.1.1'

    }
}

apply plugin: 'org.javafxports.jfxmobile'

repositories {
    mavenCentral()
    maven {
        url 'http://nexus.gluonhq.com/nexus/content/repositories/releases'
    }
}

mainClassName = 'pl.siemaeniu500.wszywka.main.Main'
ext.CHARM_DOWN_VERSION = "2.0.1"

dependencies {
    compile "com.gluonhq:charm-down-common:2.0.1"
    //compile 'com.gluonhq:charm-glisten:3.0.0'
    compile 'com.gluonhq:charm:2.1.1'
    compile files('D:/Android/Sdk/platforms/android-21/android.jar', 'C:/Users/Kamil/Documents/NetBeansProjects/WszywkaSounds/jfxdvk-8.60.8.jar')
    androidRuntime 'com.gluonhq:charm-android:2.1.1'
    iosRuntime 'com.gluonhq:charm-ios:2.1.1'
    desktopRuntime 'com.gluonhq:charm-desktop:2.1.1'
    desktopCompile 'com.github.sarxos:webcam-capture:0.3.10'
}

jfxmobile {



    downConfig {
        version = '3.0.0'
        plugins 'display', 'lifecycle', 'statusbar', 'storage'
    }

    android {
        manifest = 'src/android/AndroidManifest.xml'
        //compileSdkVersion 24
        //buildToolsVersion "24.0.3"
        androidSdk = 'D:/Android/Sdk'
    }
    ios {
        infoPList = file('src/ios/Default-Info.plist')
        forceLinkClasses = [
                'com.gluonhq.**.*',
                'javax.annotations.**.*',
                'javax.inject.**.*',
                'javax.json.**.*',
                'org.glassfish.json.**.*'
        ]
    }
}

основной класс приложения:

package pl.siemaeniu500.wszywka.main;

import javafx.application.Application;
import static javafx.application.Application.launch;

import javafx.fxml.FXMLLoader;
import javafx.geometry.Rectangle2D;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Screen;
import javafx.stage.Stage;



/**
 *
 * @author Kamil
 */


public class Main extends Application {





    @Override
    public void start(Stage stage) throws Exception {
        Rectangle2D visualBounds = Screen.getPrimary().getVisualBounds();
        Parent root = FXMLLoader.load(getClass().getResource("FXML.fxml"));
        Scene scene = new Scene(root, visualBounds.getWidth(), visualBounds.getHeight());
        stage.setScene(scene);
        stage.setMaximized(true);
        //new FXMLController().initialize();
        stage.show();
    }


    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}

Что может быть причиной этого?


person siemaeniu500    schedule 13.11.2016    source источник
comment
Без вашего кода, как мы можем сказать? Опубликуйте хотя бы свой build.gradle скрипт и хотя бы то, как вы создаете сцену/сцену в классе Application.   -  person José Pereda    schedule 13.11.2016
comment
Ваша сборка нуждается в некоторой очистке... Большинство зависимостей вообще не требуются. В основном вам понадобится только последний. Кроме того, можете ли вы удалить stage.setMaximized(true); и повторить попытку?   -  person José Pereda    schedule 13.11.2016
comment
Да, помогло, спасибо :)   -  person siemaeniu500    schedule 13.11.2016
comment
Хорошо, я опубликую это как ответ, чтобы он мог быть полезен и другим.   -  person José Pereda    schedule 13.11.2016


Ответы (1)


Когда вы устанавливаете размер сцены:

Scene scene = new Scene(root, visualBounds.getWidth(), visualBounds.getHeight());

вы уже занимаете весь экран на своем устройстве, поэтому вам не нужно устанавливать это:

stage.setMaximized(true);

Удаление этой строки должно решить проблему.

Что касается скрипта сборки, то можно упростить зависимости.

На первом этапе удалите charm-down-common. Если вы не используете charm glisten, вы можете удалить все зависимости charm-*. Если вы используете его, вы будете использовать новую версию 4+ (раскомментируйте строку ниже).

dependencies {
    // compile 'com.gluonhq:charm:4.0.1'
    compile files('D:/Android/Sdk/platforms/android-21/android.jar', 'C:/Users/Kamil/Documents/NetBeansProjects/WszywkaSounds/jfxdvk-8.60.8.jar')
    desktopCompile 'com.github.sarxos:webcam-capture:0.3.10'
}

Что касается jar-файлов android и jfxdvk, то их там быть не должно. Плагин сделает это за вас.

dependencies {
    // compile 'com.gluonhq:charm:4.0.1'
    desktopCompile 'com.github.sarxos:webcam-capture:0.3.10'
}

Перезагрузите проект (корень проекта, щелкните правой кнопкой мыши, Reload Project):

и вы увидите их в разделе Зависимости -> Компиляция для Android:

person José Pereda    schedule 13.11.2016
comment
Да, но когда я удаляю файлы компиляции ('D:/Android/Sdk/platforms/android-21/android.jar', 'C:/Users/Kamil Documents/NetBeansProjects/WszywkaSounds/jfxdvk-8.60.8.jar') Я не могу использовать пакеты android и javafxports в своем коде Java - person siemaeniu500; 13.11.2016
comment
Что вы видите в разделе Зависимости -> Компиляция для Android? - person José Pereda; 13.11.2016
comment
JAR-файлы Android и jfxdvk также появляются при компиляции для Main. После внесения каких-либо изменений в скрипт gradle вам необходимо Reload the project (см. отредактированный ответ). - person José Pereda; 13.11.2016
comment
Да, но есть ошибка, что пакеты не существуют pastebin.com/xTb6r7sj - person siemaeniu500; 13.11.2016
comment
Добавляете ли вы Android-контент в основной пакет?? Вам нужно добавить его в пакет Android. - person José Pereda; 13.11.2016
comment
Добавить его в пакет Android? Как ;р? - person siemaeniu500; 13.11.2016
comment
Основной проект (Source Packages [Java]) является общим для всех платформ (например, для настольных компьютеров и Android), поэтому он не должен содержать какой-либо специфичный для платформы код. Код конкретной платформы следует добавлять только в пакет платформы. Таким образом, ваш код Android должен перейти к Android/Java Packages. - person José Pereda; 13.11.2016
comment
@JoséPeda У меня та же проблема с android.jar и jfxdvk с тех пор, как я использую плагин Eclipse Gluon. Я обновил плагин до последней версии, установил корень AndroidSdk и добавил содержимое Android в пакет Android. - person jns; 13.11.2016
comment
Изменить: отсутствует только android.jar - person jns; 13.11.2016
comment
@jns Я зарегистрировал проблему по этому поводу, спасибо за сообщение. В NetBeans/IntelliJ это не проблема, только в Eclipse. Проблема ОП была другой, поскольку он пытался добавить код Android в основной пакет. - person José Pereda; 14.11.2016