UIManager.getLookAndFeelDefaults(). Положить ("Button.background", buttonColor)
Для цвета кнопок из JOptionPane диалогов я не понимаю, почему он не работает. Должно. Может быть, побочный эффект. Мы не видим весь ваш код.
Попробуйте этот простой код, вы должны увидеть только зеленые кнопки.
package swing.uimanager;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.UIDefaults;
import javax.swing.UIManager;
public class JFrameWithUIManger extends JFrame {
public static void main(String[] args) {
new JFrameWithUIManger();
}
public JFrameWithUIManger() {
final UIDefaults lookAndFeelDefaults = UIManager.getLookAndFeelDefaults();
lookAndFeelDefaults.put("Button.background", Color.GREEN);
add(new JButton("A button"));
pack();
setVisible(true);
JOptionPane.showMessageDialog(this, "hello I am a message dialog");
JOptionPane.showConfirmDialog(this, "hello I am a question dialog", "do you like me ?", JOptionPane.YES_NO_OPTION);
}
}
Для белого фона в заголовке у вас есть цвет (белый), поэтому он работает. Может быть, проблема в ключевой ценности. Отправьте его, пожалуйста, если вы хотите, чтобы мы поняли лучше.
Редактировать
После просмотра вам код, я понял вашу проблему. Это внешний вид. Вы не используете внешний вид по умолчанию (металл).
Возможно, вы не знаете, но все взгляды и чувства в Свинге не рождаются равными.
На самом деле, некоторые варианты и варианты смешивания поддерживаются некоторыми взглядами и ощущениями, но не поддерживаются другим внешним видом и ощущениями.
Если вы используете внешний вид по умолчанию, у вас должно быть меньше проблем с совместимостью.
Лучший способ узнать, если он правильно поддерживается, чтобы сообщить некоторые официальные документы, но это правда, что много информации о нем высохнет, с ошибками, а не подробный
В ссылке вы публикуемая в своем комментарии: http://nadeausoftware.com/articles/2008/11/all_ui_defaults_names_common_java_look_and_feels_windows_mac_os_x_and_linux#Button, клавиши, отображаемые в таблицах, не означают, что значения присутствуют или могут быть изменены, но только ключи присутствуют в LAF.
Каждый LAF несет ответственность за принятие или отсутствие ключа и возможность изменять значения, связанные с ключами.
Я попытался с помощью Windows LAF установить только кнопку цвет фона, это тоже не сработает. Таким образом, это не похоже на побочный эффект, но похоже, что больше нет поддержки этой функции для Windows LAF.
В любом случае, вы можете заинтересовать Нимбус, если хотите официальный, приятный и более свежий и более гибкий внешний вид, чем классический металлический внешний вид. Nimbus document
Она доступна с 6 Update Java SE 10.
Я согласен с вами, Metal некрасиво. Но почему бы не использовать nimbus вместо окон LAF? Здорово. Я пробовал ваш код, который изменяет некоторые значения lAF с помощью Nimbus, кажется, что он работает красиво. Может быть, вы могли бы внести некоторые незначительные изменения, чтобы настроить его, но основа должна быть приятной.
Зачем нужен новый экземпляр UIManger? Также я сортирую работу над реализацией собственных диалогов в случае, если я не могу заставить UIManager работать правильно. – DarkGuardsman
Если вы используете собственный диалог, экземпляр UImanager не требуется. – Sirsendu
Ya, но UIManager очень упрощает процесс, если я могу заставить его работать :) – DarkGuardsman