15

Java を使用してデスクトップ アプリケーションを開発しています。システム トレイ (Mac OS では Menu Extras と呼ばれる) にアイコン (コンテキスト メニュー付き) を配置したいと考えています。Java 6 は、Windows と Linux でこれを行うためのサポートを備えていますが、Mac OS では機能しません。

3 つのオペレーティング システム (DropBox など) のすべてで必要な動作をするアプリケーションを見たことがありますが、それらが Java で作成されているかどうかはわかりません。

どうすればこれを達成できますか?

Java でそれができない場合、他のクロスプラットフォーム言語でそれができるものはありますか?

ありがとう。

4

2 に答える 2

18

AWT / スイング

ドキュメントによると、OSX 10.5 update 1 以降がサポートTrayIconされています。

TrayIcons は、標準のシステム メニュー エクストラの左側に表示される NSStatusMenus を使用して、Mac OS X で表されます。TrayIcon の java.awt.Image アートワークは、メニュー エクストラの Mac OS X 標準に従ってグレースケールで表示されます。

TrayIcon.displayMessage() は、TrayIcon の下に小さな非モーダル ダイアログを表示します。TrayIcon の ActionListener は、ウィンドウを閉じるボタンを使用してウィンドウを閉じた場合ではなく、非モーダル ダイアログの [OK] ボタンが押された場合にのみ起動されます。

TrayIcon.displayMessage() を複数回呼び出すと、前のメッセージが閉じられ、最後のメッセージだけが残ります。TrayIcon.displayMessage() が呼び出されたときにアプリケーションがフォアグラウンドにない場合、アプリケーションはそのアイコンを Dock にバウンスします。メッセージ ウィンドウには、通知をトリガーしたアプリケーションを識別するために、アプリケーションのアイコンが付いたバッジが付けられます。

ノアはこのサンプルを提供しました:

java.awt.SystemTray.getSystemTray().add(new java.awt.TrayIcon(java.awt.Toolkit.getDefaultToolkit().getImage("foo.png")));

ただし、トレイに追加する前に、そのアイコンにメニューを添付することをお勧めします。

SWT

ドキュメントによると、SWT 3.3 以降はOSX 上のTrayItemアイコンをサポートしています。

システム トレイに配置されたアイコンは、OS X での実行時にステータス バーに表示されるようになりました。 SWT TrayItem

このスニペットは、メニューとアイコンを作成してトレイに配置する方法を示しています。

于 2009-12-28T20:06:12.953 に答える
1

Windows アプリケーションを自分の Mac にほとんど苦労せずに移植しました。私が気づいたことの 1 つは、アイコンが完全に生き生きとした色になっていることです (Mac の規則に従っていません)。自分自身を変換するには、OS 固有のコードを少し追加する必要があります。しかし、これは Java の以前の反復からの DLL 依存のデスクトップ統合バージョンからの大きなステップアップです。

于 2011-03-29T18:45:02.703 に答える