Ответ 1
Вы пробовали JXTrayIcon?
Я тестировал эту демонстрацию от SwingHelper на Ubuntu 10.10 с помощью Compiz, и это выглядит круто.
Я создаю приложение Java для Linux, которое использует sytray с использованием Java 6 и Swing. Приложение выглядит великолепно (использует внешний вид системы), но systray выглядит ужасно. Я имею в виду, что меню systray выглядит как старые виджеты (Motif?). Интересно, есть ли способ установить внешний вид или что-то, чтобы сделать системный лоток более красивым.
Вот скриншот лотка:
Вы пробовали JXTrayIcon?
Я тестировал эту демонстрацию от SwingHelper на Ubuntu 10.10 с помощью Compiz, и это выглядит круто.
Swing использует эмулированные виджеты пользовательского интерфейса. В нем есть несколько стилей или тем, которые вы можете применить. Если вы предпочитаете больше собственных результатов, вам нужно будет найти еще один набор инструментов для виджета. У вас есть несколько вариантов:
Если ваши потребности очень просты, вы можете быть довольны AWT, который является исходным набором инструментов Java UI. Он использует собственные виджеты, но имеет очень ограниченную библиотеку виджетов, которые он поддерживает.
Если вы хотите выйти за пределы 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?:
Я слышал о значках подносов, используя "JPopupMenu" на Ubuntu, который использует внешний вид Nimbus, поэтому это может быть вашим лучшим выбором:
Использование JPopupMenu в TrayIcon
Из того, что я видел, использование только JPopupMenu было бы большим улучшением - в сочетании с нимбом это должно быть потрясающе.
Быстрое и грязное обходное решение: Создайте неразделенный JDialog, добавьте JPopupMenu для него и сделайте его видимым из вашего слушателя вашего TrayIcon, как вы хотите.