问题标签 [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 回答
116 浏览

java - 在 Platform.startup() 启动的 javafx 应用程序中多次显示 Stage/Dialog

我正在构建一个在后台运行的应用程序,并通过单击SystemTray上的图标提供对控制面板(JavaFX 对话框)的访问。

ApplicationJavaFX 9通过调用方法增加了在不扩展类的情况下启动 JavaFX 应用程序的能力Platform.startup()

当用户双击系统托盘图标时,我调用Platform.runLater()并传递给它一个新对话框的创建和显示。但是,当用户关闭第一个对话框并尝试再次打开它时,它会默默地打开失败。

在调查了 openJFX 11.0.1 源代码后,发现一旦关闭最后一个 JavaFX 窗口,JavaFX 运行时就会终止其工具包。

我试图隐藏对话框而不是关闭它,但这也无济于事。有什么解决方法吗?

0 投票
2 回答
1927 浏览

java - JavaFX11 and Intellij

I followed the instruction in this link https://openjfx.io/openjfx-docs/#install-javafx and when i run javafx sample i get this error

and when i go to Project Structure > Project/Modules the JDK is set to JDK11 VM option:

I tried to go to Settings > Build, Execution, Deployment > Compiler > Java Compiler Project bytecode version was set to 8 and i changed it to 11 and the first error was gone but i got new error

I was searching on the internet and somebody said go to .idea\compiler.xml and set target to 11 but it's already set to 11 for me but i get the error

0 投票
2 回答
1300 浏览

java - 触摸输入和带有 JavaFX 11 的 OpenJDK 11 的问题

我正在开发一个 JavaFX 项目,并希望从 Oracle JDK 1.8 切换到 OpenJDK 11。到目前为止,过渡非常顺利,但仍然存在一个与触摸/鼠标输入相关的主要问题,这会造成一些麻烦。

JavaFX UI 应该在支持触摸的设备上运行,该设备过去可以直接与 Oracle JDK 1.8 一起工作。当我触摸屏幕时,会按预期触发以下鼠标事件序列:

MOUSE_PRESSED

MOUSE_RELEASED

MOUSE_CLICKED

在使用 OpenJDK11 构建相同的应用程序后(使用 OpenJFX 11 作为外部库,因为默认情况下 JavaFX 不再是 JDK 的一部分),我得到以下事件序列:

MOUSE_ENTERED_TARGET

MOUSE_ENTERED_TARGET

MOUSE_EXITED_TARGET

MOUSE_EXITED_TARGET

这解释了为什么我不能点击任何按钮(或一般的控件)。到目前为止,一切都很好。问题是,我如何找回我的MOUSE_{PRESSED,RELEASED,CLICKED}事件?

SSCE:

我认为值得注意的是,无论我是否使用触摸屏,所有触发的事件都是MouseEvents(不是)。TouchEvents在我看来,这本身就有点奇怪,但至少我在 JDK 8 中得到了想要的行为......

一些背景资料:

  • 操作系统:Ubuntu 18.04.01 LTS
  • 内核:4.15.0-42-generic
  • 甲骨文 JDK 1.8.0_191
  • OpenJDK 11.0.1
  • 触摸屏(据报道xinput):Atmel maXTouch Digitizer
  • 触摸屏与其他应用程序配合得很好,点击事件似乎按预期处理。
  • somehwat 相关的 VM 参数

    -Dcom.sun.javafx.isEmbedded=true

    -Dcom.sun.javafx.touch=true

    两者似乎都对这个问题没有影响

  • xev根据我是使用鼠标还是触摸屏,我得到 的输出似乎略有不同:

    鼠标(state用于0x0ButtonPress,0x100用于 ButtonRelease):

    触摸屏(state0x100这两种情况下都是):

    不过,我不确定这意味着什么。

任何帮助都将不胜感激,即使它只是确认问题可以在另一台具有另一种类型的触摸屏的机器上重现!提前谢谢了!

更新:与此同时,我设法将手放在了另一个触摸屏上,而且它似乎与那个触摸屏配合得很好。有趣的是,就像普通的鼠标事件一样,它xev为 ButtonPress 和 ButtonRelease 报告两种不同的状态,所以也许另一个触摸屏上两种事件类型相同的状态字段毕竟与此有关?

0 投票
0 回答
351 浏览

java - 使用应用程序打包 OpenJFX

我正在尝试使用 JavaFX/OpenJFX。我看到它与平台分类器有依赖关系,例如,javafx-graphics对于常见平台(Windows、Linux 等)。我向前看,我很好奇

  • 如果我可以将所有平台 .jar 文件或提取的 .class 文件打包到生成的分发 ZIP 或 JAR 中,它会神奇地选择正确的,或者
  • 我是否必须为每个受支持的平台创建单独的发行版?
0 投票
1 回答
1039 浏览

java - 如何在 11 Java JDK 版本中解决这个 JavaFX 问题?

我目前在“Intellij IDEA Edition 2018.3.1”中有一个奇怪的问题,当我运行我的 JavaFX 程序时,我总是被抛出一个错误。只是因为我添加了几行代码。

错误:

虽然 IDE 中没有显示错误。

我还创建了一个“module-file.java”文件并插入了所有组件来制作 JavaFX 程序。

我什至将全局库添加到模块和这些文件中:

https://imgur.com/a/WsMt2j8

我要感谢你的每一个答案。

0 投票
2 回答
4039 浏览

java - 无法使用 Java 11 在 IntelliJ 中启动 JavaFX 应用程序

我正在尝试使用 IntelliJ 和 Java 11 创建 JavaFX 应用程序。

我可以正确编译应用程序,但是当我尝试调试它时,我收到以下错误:

我通过创建一个新的 JavaFX 项目来创建项目,然后我添加了一个框架(Maven)并将以下内容添加到我的 POM 文件中:

这是我的项目 .iml 文件:

我还应该做什么,或者我做错了什么?

0 投票
0 回答
43 浏览

java - OpenJFX 11 在 unix 上创建未装饰的窗口

我正在使用 OpenJFX 11 并根据此处的文档进行设置:

https://openjfx.io/openjfx-docs/#install-javafx

我使用了他们的 HelloFX 示例并像这样编译它:

cromon@cromon-elementary:~/temp$ /opt/java/latest/bin/javac --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX.java

这很好用,理论上也可以运行:

cromon@cromon-elementary:~/temp$ /opt/java/latest/bin/java --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX

到目前为止没有任何问题。但是创建的窗口是未装饰的(即没有系统菜单,只有内容区域,请参见下面的截图示例)。我认为这不应该是这样的。有没有人有类似的问题?

操作系统信息:

爪哇资料:

并根据窗口HelloFX:“你好,JavaFX 11.0.1,在 Java 11.0.1 上运行”

在此处输入图像描述

这是 Swing 的一个例子:

在此处输入图像描述

0 投票
1 回答
3011 浏览

java - JavaFX - 如何修复“fx:控制器只能应用于根元素”

我用 JavaFX 创建了一个简单的无边界应用程序。现在我创建了一个标签,它应该替换丢失的“关闭”按钮。实际上,我的尝试不起作用,因为我无法与我的 FXMLController 交互。

我已经尝试将 FXMLController 添加到我的 *.fxml 文件中。我试图将控制器插入 VBox 和 AnchorPane 但两者都不起作用,我真的不明白。

标签关闭测试.fxml

FXMLDocumentController.java

标签测试.java

堆栈跟踪

我希望应用程序启动并且当我按下应用程序将关闭的“X”标签时。

快速提醒:我是 JavaFX 新手,所以我也会感谢每一个 JavaFX 教程推荐。

0 投票
1 回答
66 浏览

javafx-2 - 触发捕获的事件

这个问题很明显,我相信它很容易解决,我想知道为什么还没有发布简单易懂的答案。我找到了解释如何创建 *new 事件、更改事件方向、-bubble 等的答案。但是,我还没有找到关于捕获信号然后将其反弹到用户类的 Q/A,然后到一个类,该类是该用户类的用户,依此类推。话虽如此,这是我的问题。

我的班级,ClassOne,接收按钮的信号,然后必须将该信号传递给ClassTwo,然后将信号传递给ClassThree,我怎么在JavaFx中做到这一点。

请注意,该类不得触发新事件,但必须触发已捕获的同一事件。

下面是对我正在尝试做的事情的语法解释。

任何帮助,我的意思是任何输入将不胜感激。

0 投票
2 回答
4015 浏览

java - Maven 找不到 JavaFX

在 Maven 上构建失败:包 javafx.application 不存在

我使用的是 JDK 8,因为 JDK 11 默认不包含 JavaFX。

我在我的 pom 文件中列出了 openjfx 作为依赖项。

我已JAVA_HOME设置为:

是否需要设置环境变量才能让 Maven 找到 JavaFX jar?

这是终端输出和pom文件