gpt4 book ai didi

java - Mac 上缺少 JavaFX 的 OpenFilesEvent

转载 作者:行者123 更新时间:2023-11-30 08:42:25 24 4
gpt4 key购买 nike

我有一个 JavaFX 8 桌面应用程序,我正在创建一个 .app 应用程序包以将该应用程序分发给 Mac 用户。我使用 Oracle“Self-Contained Application Packaging”工具生成包。

我遇到的问题与与我的应用程序关联的文件有关。我将扩展名 .wordy 与这些文件相关联。如果我打开该应用程序并在 Mac Finder 中双击其中一个文件,我的应用程序将收到一个包含文件路径的 OpenFilesEvent,并且一切正常。但是,如果应用程序未打开,双击 Finder 中的 .wordy 文件将打开我的应用程序,但我从未收到包含用户双击的文件路径的事件 -点击。

文件关联是在 Oracle“Self-Contained Application Packaging”工具的 Ant 脚本中完成的,如下所示:

<project name="VocabHunter Packaging" basedir=""
xmlns:fx="javafx:com.sun.javafx.tools.ant">
...
<fx:info title="VocabHunter">
<fx:association description="VocabHunter session"
extension="wordy"
mimetype="application/x-vnd.VocabHunterSession"
icon="${basedir}/icons/mac/VocabHunterSession.icns"/>
</fx:info>
...
</project>

在 Java 代码中,我获得了 com.apple.eawt.Application 的一个实例,然后为 OpenFilesEvent 注册了监听器,如下所示:

Application application = Application.getApplication();
application.setOpenFileHandler(new OsxOpenFilesHandler(listener));

完整代码可以看here .

有谁知道如何解决这个问题,即使双击文件时应用程序没有运行,我也会收到包含 .wordy 文件路径的事件?

为了完整性,我使用的是适用于 Mac 的 Oracle JDK 1.8.0_66。

最佳答案

我测试了你的代码,也遇到了这个问题。但是当我直接在 start(Stage primaryStage) 方法中使用代码来监听时:

Application lowLevelApp = com.sun.glass.ui.Application.GetApplication();
lowLevelApp.setEventHandler {...}

第一次双击文件时,我可以获得 OpenFilesEvent。

关于java - Mac 上缺少 JavaFX 的 OpenFilesEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34569389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com