java swing systray

Haz que la java systray se vea más bonita en Linux



system tray (6)

Estoy haciendo una aplicación Java en Linux que usa Sytray usando Java 6 y Swing . La aplicación se ve genial (usa el aspecto y la sensación del sistema) pero la bandeja del sistema se ve horrible. Quiero decir que el menú del systray parece viejo widgedts (Motif?). Me pregunto si hay una manera de establecer una apariencia y algo para que la bandeja del sistema sea más bonita.

Aquí hay una captura de pantalla de la bandeja:



Debido a que Swing usa AWT en Systray , si quieres ver bien en systray. Tal vez puedas probar con SWT :)


Escribí mi propia biblioteca para eso. Aqui esta el link:

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

Uso:

import javax.swing.jtray.*; JTrayIcon.initSystemTray(); JTrayIcon icon = new JTrayIcon(img, "Tooltip", jpopupmenu); icon.displayMessage(null, "Title", "Multiline/nsecondline", 3000); // 3 seconds

La biblioteca utiliza algunos trucos sucios, por lo que tal vez no funcione en ninguna plataforma Linux y en Ubuntu. Debería funcionar para Windows y OSX también.


No lo he probado yo mismo, pero si está utilizando Java 6 Update 10 o posterior, ¿puede usar el nuevo aspecto de Nimbus ?:

Usando Nimbus LAF

He oído hablar de íconos de bandeja usando "JPopupMenu" en Ubuntu, que usa el aspecto y la sensación de Nimbus, así que esta puede ser tu mejor opción:

Usando JPopupMenu en TrayIcon

Por lo que he visto, usar JPopupMenu solo sería una gran mejora, junto con Nimbus debería ser increíble.


Swing usa widgets de UI emulados. Tiene una serie de estilos o temas que puede aplicar. Si prefiere obtener más resultados nativos, deberá buscar otro kit de herramientas de widgets. Tienes pocas opciones:

  1. Si sus necesidades son muy básicas, puede estar contento con AWT que es el kit de herramientas original de Java UI. Utiliza widgets nativos, pero tiene una biblioteca de widgets muy limitada que admite.

  2. Si desea ir más allá de AWT, considere SWT, que se mantiene en eclipse.org. Te brinda una rica biblioteca de widgets, que se implementan de forma nativa.


Una solución rápida y sucia: cree un JDialog sin decorar, agregue un JPopupMenu para él y hágalo visible desde el oyente de su TrayIcon como lo desee.