8

主に Mac 用に構築された Java アプリケーションがあります。次の 3 つのいずれかを実行できる必要があります。

  1. アプリケーションを常に現在のスペースに追従させます。つまり、デスクトップ 2 でアプリを起動してからデスクトップ 3 に切り替えると、アプリは自動的にデスクトップ 3 に表示されます。これは、ドックのアプリ アイコンを右クリックして [オプション] を選択し、[すべてのデスクトップ] を選択するのと同じです。ユーザーの操作を必要とせずに、どうにかしてこれをアプリのデフォルトの動作にすることができれば、それは素晴らしいことです!

  2. 特定の空間の画面をキャプチャします。現在、Robot クラスを使用してスクリーン キャプチャを取得しています。現在のスペースだけでなく、キャプチャするスペースを指定できる方法があれば、それは素晴らしいことです!

  3. 少なくとも現在のスペースを離れるかどうかを検出できます。

私は、これらのどちらも可能ではない方向に傾き始めています。しかし、何か助けや可能な回避策を提供できれば、それは素晴らしいことです!

GraphicsEnvironment、GraphicsDevice、GraphicsConfiguration も試してみましたが、うまくいきませんでした。Mac の仮想デスクトップ (スペース) に関する情報は返されません。

また、プラットフォーム固有のコードの使用を絶対に避けようとしていることが、問題を難しくしているのです。JNI を使用してこれを達成できることはわかっています。または、java-apple 拡張機能に何かがある可能性があります。しかし現在、私は単一のコード ブランチを使用し、Mac と Windows の両方でビルドしています。両方のプラットフォームで 2 つの別個のビルドとバイナリを使用することを避けようとしています。

4

2 に答える 2

3

ネイティブ コードを記述して JNI を使用している場合を除き、答えは「いいえ」です。Java の重要な設計上の特徴の 1 つは、Java が OS に依存しないことです。あなたが求めているのは、非常にMac OS X 固有のものです。Apple Java Extensions にも役立つものは何もありません。

于 2012-05-08T23:52:52.560 に答える
2

いいえ、私の知る限り、Java は Spaces を特別にサポートしていないため、プラットフォーム固有のネイティブ コードを使用する必要があります。ただし、JNI は、その醜さとともに、唯一の選択肢ではありません。代わりにJNAを使用できます。これは、プログラマにとってより使いやすく、デバッグがはるかに簡単です。

アプリで、プラットフォームを検出できます。プラットフォーム固有のコードを記述したプラットフォームの場合は、そのコードを実行できます。そうでない場合は、デフォルトのピュア Java 実装にフォールバックできます。

于 2012-05-09T00:11:48.223 に答える