2013-05-09 1 views
2

Я должен использовать тему Windows XP в своем проекте Java/Swing. Есть классы, как показано ниже.Как использовать тему Windows XP в приложениях Java/Swing?

com.sun.java.swing.plaf.windows.WindowsLookAndFeel 

WindowsLookAndFeel может быть использован, когда кто-то хочет использовать ту же тему, как в настоящее время применяется пользователем.

com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel 

WindowsClassicLookAndFeel может быть использован, когда кто-то хочет, чтобы специально использовать окна классические темы.

Когда мы меняем тему Windows с XP на классическую, пользовательский интерфейс swing также меняется с XP на классический. Как мы можем заставить его использовать вышеупомянутые классы?

+0

Вся цель 'WindowsLookAndFeel' - представить интерфейс Swing как собственный пользовательский интерфейс Windows. Поэтому совершенно очевидно, что ваше приложение автоматически адаптируется к тому, что выбирает пользователь. –

+1

Я не совсем понимаю, в чем проблема. Ничего не действуйте, пусть у пользователя есть любые PLAF, которые они хотят! BTW - что делают пользователи на * nix & OS X? –

+0

Используйте второй классический. У вас всегда будет классический стиль, независимо от выбранной пользователем темы. – FaithReaper

ответ

0
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 

это поможет вам родной выглядеть и чувствовать себя

+3

Не на * nix или OS X это не будет. Это будет больше похоже на «ClassNotFoundException» (к счастью). Очень плохое предложение.-1 –

4

Я обычно использую эту линию

javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName()); 

, потому что если вы запустите приложение в другой системе, вы могли бы не окна выглядеть и чувствовать себя ,

или вы можете использовать это:

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
    if ("<lookAndFeelName>".equals(info.getName())) { 
     javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
     break; 
    } 
} 

, потому что в этом случае, если вы хотите, чтобы окна Внешний вид и вы должны проверить, если это LookAndFeel существует

Или у вас есть 2 хороших способов установить LookAndFeel без проверки, если существует:

try { 
    javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
    //javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"); 
} catch (ClassNotFoundException ex) { 
    //Handle Exception 
} catch (InstantiationException ex) { 
    //Handle Exception 
} catch (IllegalAccessException ex) { 
    //Handle Exception 
} catch (javax.swing.UnsupportedLookAndFeelException ex) { 
    //Handle Exception 
} 

или просто:

try { 
    javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
    //javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"); 
} catch (Exception ex) { 
    //Handle Exception 
} 

Разница между WindowsLookAndFeel и WindowsClassicLookAndFeel заключается в том, что «WindowsLookAndFeel» будет соответствовать пользовательской теме Windows, а «WindowsClassicLookAndFeel» заставит графический интерфейс Java-приложения соответствовать классу Windows Classic, даже если пользователь не установил классическую тему Windows.

Итак, вы можете форсировать классику, но вы не можете заставить Vista/7 LookAndFeel использовать Windows Classic Theme.

Или вы можете создать свое приложение к чему-либо, как Vista/7 LookAndFeel (шучу)

+0

Моя проблема не в том, чтобы получить внешний вид системы. Мое приложение предназначено для работы только с окнами и в то же время, я ** не хочу, чтобы он смотрел классическую тему Windows, что возможно, если пользователь меняет тему. Поиск любых обходных решений ... – Sudhir

1

Один из способов осуществить это в конструкторе:

public class LookS extends JFrame { 

    String win1 = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; 
    String win2 = "com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"; 

public LookS(){ 
... 

     try { 
      UIManager.setLookAndFeel(win1); 
      SwingUtilities.updateComponentTreeUI(this); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     this.setDefaultLookAndFeelDecorated(true); 
... 
} 

Кроме того, вы можете рассмотреть эти классы тоже:

Смежные вопросы