2011-01-25 15 views
26

Tworzę aplikację Java w systemie Linux, która używa sytray using Java 6 and Swing. Aplikacja wygląda świetnie (wykorzystuje wygląd i styl systemu), ale systray wygląda okropnie. Mam na myśli menu systray wygląda jak stare widgedts (Motif?). Zastanawiam się, czy istnieje sposób, aby ustawić wygląd i styl lub coś, co sprawi, że taca systemowa będzie ładniejsza.Spraw, aby system Java był ładniejszy w Linuksie

Herezje zrzut ekranu z zasobnika: enter image description here

+1

Jestem pewien, że Motif wyglądał lepiej: P –

+2

Usunąłem moją odpowiedź, ponieważ wygląda na to, że 'UIManager.setLookAndFeel (UIManager.getSystemLookAndFeelClassName());' nie zostanie zastosowany do tych menu. +1, dobre pytanie. –

+1

@pst: rzeczywiście? Właśnie to pamiętam, jak wyglądał Motif. –

Odpowiedz

5

Czy próbowałeś już JXTrayIcon?

Przetestowałem this demo z SwingHelper na Ubuntu 10.10 z Compiz i wygląda fajnie.

+0

Wygląda na to, że używasz właściwego L & F (testowałem to sam). – Petriborg

+0

Nie działa poprawnie z wieloma monitorami. – user11153

2

Swing używa emulowane widżety UI. Ma wiele stylów lub motywów, które można zastosować. Jeśli wolisz więcej natywnych wyników, musisz poszukać innego zestawu narzędzi do tworzenia widgetów. Masz kilka opcji:

  1. Jeśli twoje potrzeby są bardzo proste, możesz być szczęśliwy dzięki AWT, który jest oryginalnym zestawem narzędzi Java UI. Używa natywnych widgetów, ale ma bardzo ograniczoną bibliotekę obsługiwanych przez nią widgetów.

  2. Jeśli chcesz wyjść poza AWT, rozważ SWT, który jest utrzymywany na eclipse.org. Daje bogatą bibliotekę widżetów, które są implementowane natywnie.

+0

Przepraszam, myślę, że napisałem błędnie pytanie, mam na myśli to, że aplikacja używa i pięknie renderuje, jest tylko zasobnikiem systemowym, który jest do bani. –

+0

Zgaduję, że brakuje ci ustawienia look-n-feeling w twoim kodzie systrayowym ... Była jeszcze inna odpowiedź z fragmentem kodu, aby ustawić wygląd-n-feel, ale wydaje się, że zniknęła. –

+0

Jeśli nie otrzymasz lepszej odpowiedzi, polecam wypróbowanie AWT dla menu systray, pozostawiając resztę aplikacji jako Swing. AWT jest w pełni zdolny do renderowania tego menu, jest już obecny w środowisku JRE i nie musisz walczyć z biznesem typu look-n-feel. –

2

Bo Swing używa AWT na Systray, jeśli chcesz dobrze wyglądać na systray. Może spróbuj z SWT :)

2

Napisałem do niego własną bibliotekę. Oto link:

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

Zastosowanie:

import javax.swing.jtray.*; 

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

Biblioteka korzysta kilka brudnych sztuczek, więc może to nie może pracować na dowolnej platformie Linux tak dobre, jak w Ubuntu. Powinien również działać w systemach Windows i OSX.

+0

Spróbuję tego w mojej pracy i wkrótce udzielę informacji zwrotnej ... –

1

nie próbowałem to sam, ale jeśli używasz Java 6 Update 10 lub nowszego, można korzystać z nowego wyglądu i czuć Nimbus ?:

Using Nimbus LAF

Słyszałem ikony zasobnika używając „JPopupMenu” na Ubuntu, która używa wygląd Nimbus i czuć, więc to może być najlepszym:

Using JPopupMenu in TrayIcon

z tego co widziałem, używając JPopupMenu sam będzie duża poprawa - w połączeniu z Nimbus powinno być niesamowite.

1

Szybkie & brudny obejście: Załóż undecorated JDialog, dodać JPopupMenu dla niego i aby był on widoczny od słuchacza myszy swojej TrayIcon jak chcesz.

Powiązane problemy