【问题标题】:Strange javafx app look on androidandroid上奇怪的javafx应用程序外观
【发布时间】:2016-11-13 03:35:54
【问题描述】:

我在 Android 上的 javafx 移植应用程序有问题。 首次启动后是这样的:

但是当我转到主屏幕然后重新加入应用程序时,它看起来应该是这样的。

build.gradle:

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);
    }

}

是什么原因造成的?

【问题讨论】:

  • 没有你的代码我们怎么知道?至少发布您的 build.gradle 脚本,以及您如何在 Application 类上创建场景/舞台。
  • 您的构建需要一些清理...大多数依赖项根本不需要。基本上你只需要最后一个。除此之外,您可以删除stage.setMaximized(true); 并重试吗?
  • 是的,它有帮助,谢谢 :)
  • 好的,我会把它作为答案发布,以便对其他人也有用

标签: android gradle javafx gluon javafxports


【解决方案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'
}

至于 android 和 jfxdvk jar,那些不应该在那里。该插件将为您管理。

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

重新加载项目(项目根目录,右键,Reload Project):

您将在 Dependencies -> Compile for Android 下看到它们:

【讨论】:

  • 是的,但是当我删除“编译文件('D:/Android/Sdk/platforms/android-21/android.jar', 'C:/Users/Kamil Documents/NetBeansProjects/WszywkaSounds/ jfxdvk-8.60.8.jar')" 我不能在我的 java 代码中使用 android 和 javafxports 包
  • 在 Dependencies -> Compile for Android 下你看到了什么?
  • Android 和 jfxdvk jar 也会出现在 Main 的编译中。在 gradle 脚本中进行任何更改后,您需要 Reload the project(请参阅编辑后的答案)。
  • 是的,但是有包不存在的错误pastebin.com/xTb6r7sj
  • 您是否将 Android 内容添加到主包中??您需要将其添加到 Android 包中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
相关资源
最近更新 更多