Java Swing - jak dwukrotnie kliknąć plik projektu na Macu, aby otworzyć moją aplikację i załadować plik?
Stworzyłem aplikację Mac Java Swing i ustawiłem dla niej rozszerzenie pliku (*. Pkkt) w pliku „Info.plist”, więc po dwukrotnym kliknięciu tego pliku otwiera moją aplikację.
Kiedy to zrobię, program działa dobrze. Teraz muszę załadować projekt (* .pkkt) do programu, ale ścieżka do pliku nie jest przekazywana jako argument metody main (...) w systemie Mac, jak to się dzieje w systemie operacyjnym Windows.
Po przeszukaniu znalazłem słoik do obsługi Apple ”MRJToolkitStubs„to maMRJOpenDocumentHandler interfejs do obsługi takich klikniętych plików. Próbowałem go użyć do załadowania tego pliku przez zaimplementowanie tego interfejsu w głównej klasie programu, ale nie działa. Zaimplementowana metoda nigdy nie jest wywoływana podczas uruchamiania programu.
Jak działa ten interfejs?
------------------------------------------------- Edytować : Dodaj próbkę kodu
Oto kod, którego używam:
<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>
Jak wspomniano w komentarzu powyżej „getProjectFilePath ()” jest zawsze pusty!