Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

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.

Ответ 5

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

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

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

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

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

Ответ 6

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