Java Swing - Как дважды щелкнуть файл проекта на Mac, чтобы открыть мое приложение и загрузить файл?

Я создал приложение Mac Java Swing и для него установил расширение файла (*. Pkkt) в & quot; Info.plist & quot; файл, поэтому при двойном щелчке по этому файлу открывается мое приложение.

Когда я делаю это, программа работает нормально. Теперь мне нужно загрузить проект (* .pkkt) в программу, но путь к файлу не передается в качестве аргумента методу main (...) в Mac, как это происходит в операционной системе Windows.

После некоторого поиска я нашел банку с яблоком для обработки & quot;MRJToolkitStubs& Quot; это имеетMRJOpenDocumentHandler интерфейс для обработки таких нажатых файлов. Я пытался использовать его для загрузки этого файла путем реализации этого интерфейса в основной класс программы, но он не работает. Реализованный метод никогда не вызывается при запуске программы.

How does this Interface run ?

------------------------------------------------- Редактировать : Добавить образец кода

Вот код, который я использую:

<code>public static void main( final String[] args ) {         
    .                   
    .         
    .       
        MacOpenHandler macOpenHandler = new MacOpenHandler();        
        String projectFilePath = macOpenHandler.getProjectFilePath();  // Always Empty !!           
    }
</code>
<code>class MacOpenHandler implements MRJOpenDocumentHandler {
    private String projectFilePath = ""; 

    public MacOpenHandler () {
        com.apple.mrj.MRJApplicationUtils.registerOpenDocumentHandler(this) ; 
    }

    @Override
    public void handleOpenFile( File projectFile ) { 
        try {
            if( projectFile != null ) {
                projectFilePath = projectFile.getCanonicalPath();
                   System.out.println( projectFilePath );  // Prints the path fine.
            }
        } catch (IOException e) {}  
    }

    public String getProjectFilePath() {
        return projectFilePath;
    }
}
</code>

As mentioned in the comment above "getProjectFilePath()" is always Empty !

Ответы на вопрос(2)

Ваш ответ на вопрос