Mac Java Swingアプリケーションを作成し、「Info.plist」ファイルにファイル拡張子(* .pkkt)を設定したので、そのファイルをダブルクリックするとアプリケーションが開きます。
私がそうするとき、プログラムはうまく動きます。ここで、プログラムに(* .pkkt)プロジェクトをロードする必要がありますが、Windowsオペレーティングシステムで発生するように、ファイルパスがMacのmain(...)メソッドに引数として渡されません。
いくつか検索した後、そのようなクリックされたファイルを処理するためのMRJOpenDocumentHandlerインターフェイスを備えたApple処理jar「 MRJToolkitStubs」を見つけました。メインプログラムクラスにそのインターフェイスを実装することにより、そのファイルをロードするためにそれを使用しようとしましたが、機能していません。実装されたメソッドは、プログラムの起動時に呼び出されることはありません。
このインターフェイスはどのように実行されますか?
- - - - - - - - - - - - - - - - - - - - - - - - - 編集:コードサンプルを追加する
これが私が使用しているコードです:
public static void main( final String[] args ) { . . . MacOpenHandler macOpenHandler = new MacOpenHandler(); String projectFilePath = macOpenHandler.getProjectFilePath(); // Always Empty !! }
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;
}
}
上記のコメントで述べたように、「getProjectFilePath()」は常に空です!