29

Java 6 と Swing を使用して sytray を使用する Linux で Java アプリケーションを作成しています。アプリは素晴らしい (システムのルック アンド フィールを使用している) ように見えますが、systray はひどいものです。つまり、systray メニューは古いウィジェット (モチーフ?) のように見えます。ルック アンド フィールを設定する方法や、システム トレイをより美しくする方法はあるのでしょうか。

トレイのスクリーンショットを次に示します。 ここに画像の説明を入力

4

6 に答える 6

8

JXTrayIconを試しましたか?

私はCompizを使用してUbuntu10.10でSwingHelperからこのデモをテストしましたが、見た目はかっこいいです。

アップデート

2020年になると、これらのリンクは壊れ、このソリューションには今日多くの欠点があります。たとえば、GNOME3デスクトップ環境では、システムトレイアイコンが完全に削除され、AppIndicatorに置き換えられました。

Java(AWT / Swing)システムトレイのサポートは本日壊れています。このJavaライブラリを使用することをお勧めします:https ://github.com/dorkbox/SystemTray

サイトから:

Java6以降でのSwing/AWT、GtkStatusIcon、およびAppIndicatorのプロフェッショナルなクロスプラットフォームSystemTrayサポート。このライブラリは、OSとデスクトップ環境に応じて、またAutoDetect(デフォルト)が有効になっているかどうかに応じて、OSネイティブメニューとSwing/AWTメニューを提供します。

参考までに、元の例のコピーをここで見つけることができます

于 2011-02-03T13:54:28.350 に答える
2

Swing はエミュレートされた UI ウィジェットを使用します。適用できる多くのスタイルまたはテーマがあります。よりネイティブな結果が必要な場合は、別のウィジェット ツールキットを探す必要があります。いくつかのオプションがあります:

  1. あなたのニーズが非常に基本的なものであれば、元の Java UI ツールキットである AWT で満足できるかもしれません。ネイティブ ウィジェットを使用しますが、サポートするウィジェットのライブラリは非常に限られています。

  2. AWT を超えたい場合は、eclipse.org で管理されている SWT を検討してください。ネイティブに実装されたウィジェットの豊富なライブラリを提供します。

于 2011-01-25T02:44:32.600 に答える
2

そのための独自のライブラリを作成しました。リンクは次のとおりです。

http://www.2shared.com/file/sQdjb6aG/jtray.html

使用法:

import javax.swing.jtray.*;

JTrayIcon.initSystemTray();
JTrayIcon icon = new JTrayIcon(img, "Tooltip", jpopupmenu);
icon.displayMessage(null, "Title", "Multiline\nsecondline", 3000); // 3 seconds

このライブラリはいくつかの汚いトリックを使用しているため、Linux プラットフォームでは Ubuntu ほどうまく機能しない可能性があります。Windows と OSX でも動作するはずです。

于 2011-01-31T19:48:59.657 に答える
2

Swing はSystrayで AWT を使用するため、systray で見栄えを良くしたい場合。多分あなたはSWTで試すことができます:)

于 2011-01-31T09:56:41.907 に答える
1

自分で試したことはありませんが、Java 6 Update 10以降を使用している場合は、新しいNimbusルックアンドフィールを使用できますか?:

ニンバスLAFの使用

ニンバスのルックアンドフィールを使用するUbuntuの「JPopupMenu」を使用したトレイアイコンについて聞いたことがあるので、これが最善の策かもしれません。

TrayIconでのJPopupMenuの使用

私が見たところ、JPopupMenuを単独で使用することは大きな改善であり、Nimbusと組み合わせると素晴らしいはずです。

于 2011-02-01T14:57:09.230 に答える
1

手っ取り早い回避策: 装飾されていない JDialog を作成し、JPopupMenu を追加して、必要に応じて TrayIcon のマウス リスナーから表示できるようにします。

于 2011-02-09T11:24:36.030 に答える