无法更改JOptionPane的背景颜色

问题描述:

您好我已经创建了示例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!"); 
} 

}

我认为你需要得到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