无法更改JOptionPane的背景颜色

时间:2010-04-12 04:34:07

标签: java swing joptionpane

您好我已经创建了样本progeam,它将提供确认对话框的相同外观和感觉,并将背景颜色设置为红色。 但我不知道选项的背景颜色显示为默认颜色但不是红色的问题是什么。我也需要在所有平台上使用相同的确认对话框。

这是我写的代码。请帮我解决问题

公共类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!");
}

}

1 个答案:

答案 0 :(得分: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!");
}

}