Сделайте Java systray более красивым в Linux

Я делаю Java-приложение на Linux, которое использует sytray использование Java 6 и Swing. Приложение выглядит отлично (использует внешний вид системы), но systray выглядит ужасно. Я имею в виду, что меню systray выглядит как старые widgedts (мотив?). Интересно, есть ли способ установить внешний вид или что-то сделать системный лоток красивше.

вот скриншот лотка: enter image description here

6 ответов


вы пробовали JXTrayIcon?

Я проверял демо от SwingHelper на Ubuntu 10.10 с Compiz, и это выглядит круто.


Swing использует эмулированные виджеты пользовательского интерфейса. Он имеет ряд стилей или тем, которые вы можете применить. Если вы предпочитаете более собственные результаты, вам нужно будет искать другой инструментарий виджетов. У вас есть несколько вариантов:

  1. Если ваши потребности очень просты, вы можете быть довольны AWT, который является оригинальным Java UI toolkit. Он использует собственные виджеты, но имеет очень ограниченную библиотеку виджетов, которые он поддерживает.

  2. Если вы хотите выйти за рамки AWT, рассмотрим SWT, который поддерживается на eclipse.org - ... Это дает вам богатую библиотеку виджетов, которые реализованы изначально.


потому что Swing использовать AWT на Systray, Если вы хотите большой смотреть на systray. Может быть, вы можете попробовать с SWT:)


Я написал для него собственную библиотеку. Вот ссылка:

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.


Я сам не пробовал, но если вы используете Java 6 Update 10 или более позднюю версию, можете ли вы использовать новый внешний вид Nimbus?:

использование Nimbus LAF

Я слышал о значках в трее с помощью "JPopupMenu" на Ubuntu, который использует внешний вид нимба, так что это может быть ваш лучший выбор:

использование JPopupMenu в TrayIcon

из того, что я видел, использование JPopupMenu в одиночку было бы большим улучшением-в сочетании с нимбом он должен будь крутым.


быстрый и грязный решение: Создайте undecorated JDialog, добавьте JPopupMenu для него и сделайте его видимым из вашего прослушивателя мыши вашего TrayIcon, как вы хотите.