我正在为Mac编写一个具有自己的文件扩展名.edul
的程序。我得到了它的工作,以便当程序已经打开并且您打开文件时将其加载,但是当程序仍在运行时我尝试执行此操作时,我不会收到该事件,并且不在args中。
我试图更改为com.apple.eawt.Application
,但不幸的是java.desktop
无法导出此类,因此无法正常工作。
Desktop desktop = Desktop.getDesktop();
desktop.setOpenFileHandler(e -> {
try {
FileWriter fileWriter = new FileWriter(System.getProperty("user.home") + "/Desktop/test.txt");
fileWriter.write(e.getFiles().toString());
fileWriter.close();
} catch (IOException ignored) {
}
});
因此,我希望桌面上有一个文件,该文件具有我在程序运行之前以及运行时打开的文件的位置,并且我打开了另一个文件,该文件也显示在我的桌面上。
因此在打开第一个文件后:
[file/path/test.edul]
并在几秒钟内打开文件:
[file/path/test2.edul]
我目前只会得到:
[file/path/test2.edul]
答案 0 :(得分:0)
因此,问题在于,当您在启动fx应用程序的类中定义FileOpenHandler
时,仅在程序已经运行时才抛出FileOpenEvent
。因此,您应该创建另一个不扩展Application
的主类,并且即使应用程序仍在启动,FileOpenEvent
也会正确抛出。