Невозможно изменить цвет фона для JOptionPane - PullRequest
0 голосов
/ 12 апреля 2010

Привет, я создал образец проге, который придаст такой же вид диалоговому окну подтверждения и установил цвет фона как красный. Но я не знаю, в чем проблема, что мой цвет фона отображается как цвет по умолчанию, а не красный. Кроме того, мне нужно одинаковое оформление диалога подтверждения на всех платформах.

Вот код, который я написал. пожалуйста, помогите мне решить проблему

открытый класс 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 Ответ

2 голосов
/ 12 апреля 2010

Я думаю, вам нужно получить новый экземпляр UIManager и установить для него свойство цвета панели.

Смотрите здесь для фрагмента кода

Этот код отлично работает для меня на компьютере с 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!");
}

}

...