2010-06-08 9 views
5

buduję aplikację w Java Swing i używam poniższy kod, żeby dać UI native OS wyglądaćSwing UI nie posiada natywny OS wyglądać

try { 
    UIManager.setLookAndFeel(
    UIManager.getSystemLookAndFeelClassName()); 
    } catch (Exception e) { 
    e.printStackTrace(); 
} 

Na OS X, wygląd jest w porządku , ale w oknach (XP i 7) przyciski wyglądają tak.

alt text http://img710.imageshack.us/img710/8735/buttonsoc.png

Użyłem dokładnie ten sam kod na innych projektach i działa dobrze. Ale w tym konkretnym projekcie mam zupełnie inny wygląd.

Używam Java 1.6

Z góry dziękuję!

+0

Jaką wersję Java używasz? –

+2

To, co napisałeś, powinno zadziałać. Czy obejrzałeś http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/plaf.html#programmatic? –

+0

@Romain - To tam otrzymałem kod i działało wcześniej. Teraz zaskakująco daje inny wygląd. Testowałem go również na różnych systemach z tym samym wynikiem. –

Odpowiedz

8

Czy tworzysz elementy GUI przed ustawieniem L & F? Jeśli już utworzyłeś (na przykład) instancje JButton i wywołałeś na nich metody, przydzielają one swój interfejs użytkownika - zmiany do L & F, ponieważ nie wpłynie to na już utworzone instancje.

To wyjaśnia, dlaczego działa na komputerze Mac (domyślnie L & F to Mac na Apple JVM IIRC), ale nie w systemie Windows. Możesz to szybko przetestować, jeśli przeniesiesz ustawienie L & F bezpośrednio do głównej metody jako pierwsze wywołanie (przy założeniu, że główna klasa NIE zawiera oczywiście inicjalizowanych statycznie instancji GUI).

+0

Dzięki! To było to. Oszczędzasz mi dużo bólu. –

Powiązane problemy