2010-06-08 6 views
5

Я строй приложения в Java Swing, и я использую следующий код, чтобы получить UI аборигенный OS выглядятSwing UI не родной OS выглядеть

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

На OS X, внешний вид отлично , но на окнах (XP и 7) кнопки выглядят так.

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

Я использовал это точно такой же код на других проектах, и это работает отлично. Но в этом конкретном проекте я получаю совершенно другой взгляд.

Я использую Java 1.6

Заранее благодарен!

+0

Какую версию Java вы используете? –

+2

То, что вы опубликовали, должно работать. Вы просмотрели http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/plaf.html#programmatic? –

+0

@Romain - Именно там я получил код и раньше работал. Теперь удивительно, что он дает другой взгляд. Я также тестировал его на разных системах с тем же результатом. –

ответ

8

Возможно, вы создали свои элементы графического интерфейса, прежде чем устанавливать L & F? Если вы уже создали экземпляры JButton и называли их методами, они распределяют свои одноранговые изменения в L & F после того, как это не повлияет на уже созданные экземпляры.

Это объясняет, почему это работает на Mac (L & F по умолчанию для Mac на JVM IIRC от Apple), но не в Windows. Вы можете протестировать это быстро, если вы переместите настройку L & F непосредственно в свой основной метод как самый первый вызов (это предполагает, что ваш основной класс НЕ содержит никаких статически инициализированных экземпляров GUI, конечно).

+0

Спасибо! Вот и все. Ты спасаешь меня от боли. –