У Swing UI нет родного вида ОС - PullRequest
5 голосов
/ 08 июня 2010

Я создаю приложение на Java Swing и использую следующий код, чтобы придать интерфейсу родной вид ОС

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

На OS X выглядит нормально, но на Windows (XP и 7) кнопки выглядят так.

альтернативный текст http://img710.imageshack.us/img710/8735/buttonsoc.png

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

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

Заранее спасибо!

1 Ответ

8 голосов
/ 08 июня 2010

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

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

...