2014-03-13 52 views
0

我嘗試使用UIManager.setLookAndFeel函數來更改我的Java應用程序的外觀,但它對我的JFrame /按鈕的外觀沒有影響。我使用Netbeans 7.4,我的申請是Java Swing Desktop ApplicationUIManager setLookAndFeel不起作用

 /** 
    * Main method launching the application. 
    */ 
    public static void main(String[] args) {  
     try { 
     UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel"); 
     } catch (Exception e) { 
      System.out.println(e.getMessage()); 
     } 
     System.out.println("init"); 
     launch(JavaMysqlTestApp.class, args);   
    } 

我用

  • com.sun.java.swing.plaf.motif.MotifLookAndFeel
  • javax.swing.plaf.metal.MetalLookAndFeel
  • com.sun.java.swing.plaf.gtk.GTKLookAndFeel
  • UIManager.getSystemLookAndFeelClassName()
  • UIManager.getCrossPlatformLookAndFeelClassName()

但他們沒有改變我的companent外觀的任何東西。我怎樣才能使這個功能生效?

+0

是'launch(JavaMysqlTestApp.class,args);'啓動另一個應用程序? – alex2410

+0

這是一個'java桌面應用程序'而不是'java應用程序'。所以這個消息來自我認爲的那件事。現在我在'@Override protected void startup()'函數中使用了'UIManager.setLookAndFeel'方法,現在它可以工作了! – Fer

回答

1

有人可能會檢查所有的外觀和感覺:

try { 
     LookAndFeel laf = UIManager.getLookAndFeel(); 
     for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { 
      ... 
      if (laf.getName().equals(info.getName())) { 
       ...; 
      } 
     } 
    } catch (ClassNotFoundException | InstantiationException 
      | IllegalAccessException | UnsupportedLookAndFeelException ex) { 
     Logger.getLogger(NewJFrame1.class.getName()).log(Level.SEVERE, null, ex); 
    } 

大概的外觀和感覺是設置第二次。對於初學者發現這個問題:L & F只適用於swing;如果使用awt按鈕(而不是JButton)或JavaFX,您將看不到任何更改。

你可以這樣做:

UIManager.addPropertyChangeListener(...); 

和任何變化做你的變化之後。