2010-04-12 143 views
0

您好我已經創建了示例progeam,它將給出確認對話框的相同外觀和感覺,並將背景顏色設置爲紅色。 但我不知道是什麼問題,我的背景顏色的選項顯示爲默認顏色,但不是紅色。我也需要在所有平臺上確認對話的外觀和感覺。無法更改JOptionPane的背景顏色

這是我寫的代碼。請幫我解決這個問題

公共類JOptionPaneBackground {

public static void main(String[] args) throws Exception { 
    // UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName()); 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

    UIDefaults uiDefaults = UIManager.getLookAndFeelDefaults(); 
    List<Object> keys = new ArrayList<Object>(uiDefaults.keySet()); 
    Collections.sort(keys, new Comparator<Object>() { 
     public int compare(Object o1, Object o2) { 
      return (o1.toString()).compareTo(o2.toString()); 
     } 
    }); 
    for (Object key : keys) { 
     System.out.println(String.format("%-40s = %s", key, uiDefaults.get(key))); 
    } 

    UIManager.put("OptionPane.background", Color.red); 
    UIManager.put("Panel.background", Color.red); 

    JOptionPane.showConfirmDialog(null, "Hello World!"); 
} 

}

回答

2

我認爲你需要得到UIManager中的一個新的實例,並設置該窗格的顏色屬性。

here的代碼片斷

此代碼工作正常,我在Windows機器上:

public class JOptionPaneBackground { 

public static void main(String[] args) throws Exception { 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

    UIManager.put("OptionPane.background", Color.RED); 
    UIManager.put("Panel.background", Color.RED); 

    JOptionPane.showConfirmDialog(null, "Hello World!"); 
} 

}

+0

嗨Prachi thatnks您的快速反應。很高興得到你的回覆。在我的代碼中,如果我評論UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 那麼我的程序工作正常,但不會給所有平臺相同的外觀和感覺。但我希望跨平臺的外觀和感覺並設置背景顏色這兩種東西 – 2010-04-12 05:18:33

+0

您使用的是哪個版本的Java?我剛剛在1.5上試過你的代碼,它適用於我。因爲我猜測這只是爲了測試,所以我沒有註釋掉顯示所有首選項的代碼部分。 – Prachi 2010-04-12 18:00:24

+0

我正在使用Java 1.6 – 2010-04-13 06:13:26