Desktop.setOpenFileHandler не работает, когда программа не запущена - PullRequest
0 голосов
/ 07 января 2019

Я делаю программу для Mac, которая имеет собственное расширение файла .edul. У меня все работает так, что когда программа уже открылась и вы открываете файл, она загружается, но когда я пытаюсь это сделать, когда программа еще не запущена, я не получаю событие и оно не в аргументах.

Я пытался перейти на 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]

1 Ответ

0 голосов
/ 08 января 2019

Итак, проблема в том, что когда вы определяете FileOpenHandler в классе, который запускает ваше fx-приложение, FileOpenEvent выбрасывается только тогда, когда программа уже запущена. Поэтому вы должны создать другой основной класс, который не расширяет Application, и FileOpenEvent будет корректно выдан, даже когда приложение все еще запускается.

...