0

私は自分の Java Swing アプリケーションを AppleScript 対応にしたいと考えています。

オープン、印刷などの事前定義されたイベントに応答しようとしているだけではありません。

AppleEvents が Listener インターフェイスを介して表示されるのが最善です。

編集: Apple Events についての私の理解を少し説明すると、私が怠け者ではないことを示すのに役立つかもしれません。:-) 多くの定義済みイベントに応答する方法を示すコードをここに書きました。

https://github.com/joelkevinjones/snippets/blob/e7b10128156bcc213f8c24dbda464ad09a8a1e33/Java/AppleSpecific/AppleLookAndFeelDemo.java

Apple Events は、Java 以外のインターフェースを使用して通常のアプリケーションに配信されます。私が発見した限りでは、これらのイベントを取得するための Java メソッドは提供されていません。Apple Event テクノロジには、アプリケーションが応答するイベントと、Apple Events をプログラムで構築するための 4 文字のコードを人間が読める形式で記述する「用語」ファイルの作成が含まれます。javax.script.ScriptEngine のインスタンスを作成しても、私が望むことはできません。Java プログラムが AppleScript の呼び出しを開始できるようにしますが、AppleScript に Java プログラムを呼び出させる手段はありません。

明確にするために、次の方法を示すライブラリまたは例が既に作成されていますか?

  1. 特定の Java メソッドを AppleScript メソッドおよび/またはクラスを AppleScript クラスとして「可視」としてマークまたは登録します。

  2. 宣言的なアプローチに失敗しました。Java アプリケーションに送信された Apple Events をキャプチャするための Java メソッドはありますか? イベントがバイトの配列として返されるだけの場合は、イベントを解析して Swing イベントに変換し、逆のプロセスを使用して、Apple イベントを送信したアプリケーションに結果を返すことができます。

  3. それとも、多くの JNI コードを記述する必要がありますか?

4

1 に答える 1

0

com.apple.eawt パッケージで利用可能な Application および ApplicationAdaptor クラスを実装します。ApplicationAdaptor クラスにイベント ハンドラーを実装することにより、アプリケーションは Print や Open などの基本的なイベントを生成して処理できます。これら 2 つのクラスに関する情報は、J2SE 5.0 Apple Extensions Reference に記載されています。

Java SE 6 では、javax.script API を使用して AppleScript を呼び出すこともできます。以下のリストは、この機能の実装例です。

public static void main(String[] args) throws Throwable {
    String script = "say \"Hello from Java\"";

    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("AppleScript");
    engine.eval(script);
}

ソース: http://qery.us/3xr

于 2013-07-18T08:39:34.090 に答える