问题标签 [openjfx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
117 浏览

java - 扩展 SimpleStringProperty 的问题

我只是想在 OpenJFX 11.0.1 中扩展 SimpleStringProperty 以添加一些额外的功能。但是 ist 似乎并不那么容易,我经历了我的扩展属性的奇怪行为,我不知道为什么。我认为它应该工作。

我在此示例代码中简化的 SimpleStringProperty 扩展包含另一个只读字符串属性,每次用户键入绑定的 TextField 时都应更新该属性。在这种情况下,删除所有不允许的字符并转换前缀。(我知道这并不完美,但足够短,可以展示)

启动示例代码后,您将获得一个带有一行控件的窗口。键入“001 (242) 555666”之类的字符串,标签应显示标准化的电话号码,例如“+1242555666”。

  • 初始转换工作正常。
  • 我从来没有得到任何例外。
  • 当我输入新数字时调用转换。

但是,如果您在几秒钟后尝试键入和删除,则我的属性的 set() 方法不再由与 TextField 的双向绑定触发。

为了简化示例,我没有使用 TextFormatter。如果我使用一个,问题不会改变。

谁能帮我找出问题所在?

Windows 和 OS X 显示与 OpenJFX 11 和 OpenJFX 11.0.1 相同的行为

我用 JDK 1.8 尝试了相同的代码,它工作正常。

0 投票
1 回答
310 浏览

java - 使用 javafxplugin 和休眠时无法在 IDE 之外运行 JavaFX 应用程序

我在使用 gradle:installDist 分发我的 JavaFX 应用程序时遇到问题。我将问题简化为一个基本示例。

我的应用程序有以下设置:

  • 开放JDK 11
  • 开放JFX 11
  • 摇篮 5.0
  • 休眠 5.4
  • h2数据库 1.4.197

构建.gradle:

代码:

持久性.xml:

当我在我的 IDE 中运行它时,一切都很好。但是,当我使用 gradle:installDist 分发应用程序并尝试运行 startscript 时,出现以下异常:

但是,当我删除

从我的 gradle 插件列表中重新分发应用程序,它使用来自 gradle:installDist 的分布式 startscript 运行良好。

0 投票
1 回答
12250 浏览

java - 打包非模块化 JavaFX 应用程序

我有一个 Java 8 应用程序,它使用 JavaFX 并且主类扩展 了 javafx.application.Application。目前,我将它作为一个胖罐子交付,它在 Oracle Java 8 上运行良好。

现在我希望它能够在 OpenJDK 11 上运行。要添加 JavaFX,我已经将 org.openjfx 中的工件添加到类路径中,并将它们包含在 fat jar 中。如果我从命令行启动我的 jar,我会得到

我找到了解决这个问题的两种可能方法:

  1. 肮脏的:编写一个不扩展应用程序的特殊启动器并绕过模块检查。见http://mail.openjdk.java.net/pipermail/openjfx-dev/2018-June/021977.html
  2. 干净的:将 --module-path 和 --add-modules 添加到我的命令行。这个解决方案的问题是,我希望我的最终用户能够通过双击来启动应用程序。

虽然我可以选择 1. 作为解决方法,但我想知道目前(OpenJDK 11)构建/交付非模块化 JavaFX 应用程序的可执行胖 jar 的预期方式是什么。任何人都可以帮忙吗?

0 投票
0 回答
775 浏览

java - unsatisfiedLinkError on openjfx webkit(32bit)

为了使用 webview amazoncorretto 8 (32bit),我想构建 32bit openjfx。我可以创建一个库,但是当我使用它时,我得到一个UnsatisfiedLinkError.

参考以下 URL 构建它。

https://dzone.com/articles/how-to-build-openjfx-8-on-windows-from-source

  • Visual Studio :社区 ⇒ 专业
  • 它的目标是 32 位

注意:在 64 位上构建时没有发生错误。

示例代码:

错误:

0 投票
4 回答
1879 浏览

java - 如何在没有 CMD 窗口的情况下运行 jlink 生成的 Java 运行时映像?

我为一个简单的 OpenJFX 应用程序创建了 Java 运行时映像。为了运行这个应用程序,jlink 在%image_path%/bin目录下自动生成了两个 lauch 脚本。这是它的样子(适用于 Windows):

显然,当我运行这个批处理文件时,它会打开新的 shell 窗口,这不是我想要的。我已经尝试了所有常见的方法:使用javaw而不是,通过命令java运行脚本等。没有任何效果。start

是否可以避免 shell 窗口或以某种方式创建本机启动器?

0 投票
1 回答
273 浏览

java - 带有 OpenJDK 10 和 OpenJFX 的 MacOS X 上 JavaFX 中的 HeadlessException

我收到错误

打电话时

我在这个版本中使用 OpenJDK

和 OpenJFXjavafx-sdk-11MacOS 10.14.2.

为什么 JVM 在 MacOS 上以无头模式运行?如何在没有无头模式的情况下运行它?

0 投票
2 回答
3016 浏览

java - OpenJFX 对 32 位系统的支持

我想为 Windows x86 架构构建我的 JavaFX 应用程序。所以我下载了 Adopt OpenJdk 32-bit build 并用它来创建 Java Runtime Image。当我尝试运行应用程序时,出现以下错误:

发生此错误是因为openjfx:javafx-graphics工件依赖于平台,并且它包括为 64 位架构编译的 DLL。

Maven Central中没有 32 位 OpenJFX 版本。

是否有可能在某处获得 x86 版本?或者我怎样才能自己构建它?

0 投票
1 回答
65 浏览

javafx - FX 11:在基类中加载控制器

将 FXML 注入从基类派生的 FX 类(控制器)中有效 - 但为什么呢?

下面的代码实际上是有效的。但我很好奇为什么?

FXML 在抽象基类 (FXMLPopup) 的构造函数中加载并注入派生类 (TestfxmlController)。

我的问题:当基类被构造(并且 fxml 被注入)时,派生类还没有被构造。另外恕我直言,基础不应该对派生类一无所知,不是吗?

此外,要注入的字段在派生类中是私有的!因此加载器必须使其可访问,但基础中没有@FXML 可以允许这样做(权限仅在尚未构造的派生类中给出 - 那么该字段根本不存在在基地!)。

FXML 仍然被正确地注入到派生类中——这些字段实际上是派生类中的字段。为什么这行得通?

基类:

派生类:

FXML代码:

我会期待什么?我希望错误超过错误。加载器没有找到基类中的字段并且访问被拒绝......但它以某种方式神奇地完美无瑕。尽管我在这样一个小例子中尽可能地违反了一切。我想了解这背后的“魔力”……

0 投票
1 回答
1066 浏览

java - 无法在 Raspberry Pi Model 3 和 Java 11 上运行简单的 HelloWorld JavaFx 应用程序

我无法运行Gluon JavaFx示例。除了使用较新的Liberica JDK 11.0.2而不是预览版并将JAVA_HOME变量指向相应的目录之外,我完成了描述的所有步骤。

使用以下命令执行演示应用程序:

给我以下输出和错误:

任何想法,可能有什么问题?我在 stackoverflow 上找到了各种提示,例如另外安装以下软件包:

或使用以下方法进行固件更新:

甚至修改/etc/udev/rules.d/99-com.rules并添加:

确实引起了任何变化。

有谁知道我缺少什么或可以做些什么来让它运行?

0 投票
1 回答
2634 浏览

java - JavaFX 11 部署失败:无法创建任务或键入 javafx:com.sun.javafx.tools.ant:fileset

我正在尝试部署我的项目,但我不断收到以下错误,我该怎么办?此外,我有 java 11,但我只能在 IntelliJ 中选择高达 10 的项目语言级别,但我可以使用“var”语法并运行它。IntelliJ 信息:

编辑:显然 intellij IDEA 1.x 不支持 java 11 我已经下载了最新版本,目前正在尝试重做整个过程

最终编辑:我已经通过在 intelliJ IDEA 3.x 上使用 java 8 解决了这个问题,并遵循了这个指南。谢谢你

主意

信息:Java FX Packager: [C:/Program Files/Java/jdk-11.0.2\bin\java, -Dant.home=D:\Programs\IntelliJ IDEA 2018.1.5\lib\ant, -classpath, D: \Programs\IntelliJ IDEA 2018.1.5\lib\ant/lib/ant.jar;D:\Programs\IntelliJ IDEA 2018.1.5\lib\ant/lib/ant-launcher.jar;C:/Program Files/Java/ jdk-11.0.2/lib/ant-javafx.jar;C:/Program Files/Java/jdk-11.0.2/jre/lib/jfxrt.jar, org.apache.tools.ant.launch.Launcher, -f , C:\Users\HP.IntelliJIdea2018.1\system\compile-server\luckypick-m_8a6db982_temp_\build.xml] 信息:Java FX Packager: Buildfile: C:\Users\HP.IntelliJIdea2018.1\system\compile-server \luckypick-m_8a6db982_temp_\build.xml 信息:Java FX 打包程序:[taskdef] 无法从资源 com/sun/javafx/tools/ant/antlib.xml 加载定义。找不到。信息:Java FX Packager:信息:Java FX Packager:构建工件:信息:27.01.2019 15:09 - 编译完成,在 8 秒 226 毫秒内出现 2 个错误和 0 个警告错误:Java FX Packager: BUILD FAILED C:\Users\HP.IntelliJIdea2018.1\system\compile-server\luckypick-m_8a6db982_temp_\build .xml:3:问题:无法创建任务或键入 javafx:com.sun.javafx.tools.ant:fileset 原因:名称未定义。行动:检查拼写。行动:检查是否已声明任何自定义任务/类型。行动:检查任何/声明已经发生。此命名空间中尚未定义任何类型或任务总时间:0 秒错误:Java FX 打包程序:fx:deploy 任务失败。com.sun.javafx.tools.ant:fileset 原因:名称未定义。行动:检查拼写。行动:检查是否已声明任何自定义任务/类型。行动:检查任何/声明已经发生。此命名空间中尚未定义任何类型或任务总时间:0 秒错误:Java FX 打包程序:fx:deploy 任务失败。com.sun.javafx.tools.ant:fileset 原因:名称未定义。行动:检查拼写。行动:检查是否已声明任何自定义任务/类型。行动:检查任何/声明已经发生。此命名空间中尚未定义任何类型或任务总时间:0 秒错误:Java FX 打包程序:fx:deploy 任务失败。

这是我的项目目录的外观以及它具有哪些文件。

目录

这是luckypick.properties

这是luckypick.xml

蚂蚁构建输出:

蚂蚁构建输出