2012-04-20 154 views
0

我遇到了java外觀問題。Java - 外觀和感覺問題

我用下面的代碼將其設置爲Nimbus的皮膚在我的主要方法:

public class Main 
{ 
    public static void main(String[] args) 
    { 
     try 
     { 
      boolean found = false; 
      for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) 
      {    
       if ("Nimbus".equals(info.getName())) 
       { 
        UIManager.setLookAndFeel(info.getClassName()); 
        found = true; 
        break; 
       } 
      } 

      if (!found) UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
      UIManager.put("AuditoryCues.playList", UIManager.get("AuditoryCues.allAuditoryCues")); 
     } 
     catch (Exception e) {} 

     Manager mngr = new Manager(); 
     mngr.setSize(1000, 600); 
     Utils.centerWindow(mngr); 
     mngr.setVisible(true); 
    } 
} 

,它給了我這樣的窗口:

enter image description here

,你可以看到,JInternalFrames正確皮膚,但主窗口不是!

我該如何將主題應用於此窗口?

謝謝。


Manager是一個簡單的JFrame用下面的代碼:

public class Manager extends JFrame 
{ 
    public Manager() 
    { 
     initComponents(); 
    } 

    private void initComponents() 
    { 
     setDefaultCloseOperation(3); 
     setTitle("My window"); 
     setIconImage(ImageLoader.getIcon().getImage()); 

     // My components go here 

     pack(); 
    } 
} 
+0

你什麼時候調用運行你給出的代碼的方法?確保它是您程序中發生的第一件事。 – kentcdodds 2012-04-20 13:44:23

+0

我編輯了我的代碼。 – Manitoba 2012-04-20 13:47:21

+0

我猜''經理'是主窗口。這真的很奇怪,他們給窗口賦予不同的外觀和感覺。此外,JInternalFrames看起來不像我的Nimbus外觀...我猜你是在linux上或者其他什麼東西。如果沒有真正的SSCCE(.org),我認爲我不能再幫你... – kentcdodds 2012-04-20 14:02:31

回答

0

剛剛嘗試之前幀/對話建立在這兩個選項開關:

JDialog.setDefaultLookAndFeelDecorated (true); 
JFrame.setDefaultLookAndFeelDecorated (true); 

這將允許的JFrame/JDialog的距離拉芳,而不是系統的得到他們的裝飾。

+0

我嘗試過但沒有任何改變。 我在'Manager mngr = new Manager();之前添加了第二行;' – Manitoba 2012-04-20 17:55:10

+1

我試着用一些LaF來做這件事 - 它不適用於Nimbus。正如我從一些主題中看到的,Nimbus似乎在Windows類型的操作系統上使用了系統裝飾。雖然沒有看到任何解決方案... – 2012-04-20 18:48:51

0

嗯,我不知道該怎麼爲你做沒有良好的SSCCE,但如果你想總是對我的作品的方法的例子,你可以看看github上的Java-Helper。具體來說,請查看this line的SwingHelper。爲了符合堆棧溢出的一些基本規則,我添加了下面的代碼;)祝你好運。

/** 
    * Sets the look and feel to the given type (like "Nimbus") Learn more here: 
    * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
    * 
    * @param lookAndFeel to set (like "Nimbus") 
    */ 
    public static void setLookAndFeel(String lookAndFeel) { 
    try { 
     for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
     if ((info.getName()).equals(lookAndFeel)) { 
      javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
      break; 
     } 
     } 
    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) { 
     java.util.logging.Logger.getLogger(SwingHelper.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } 
    }