Как изменить цвет фона JOptionPane?
Я добавил JOptionPane к моему приложению, но я не знаю, как изменить цвет фона на белый?
`int option = JOptionPane.showConfirmDialog(bcfiDownloadPanel,
new Object[]{"Host: " + source, panel},
"Authorization Required",
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE
);
if (option == JOptionPane.OK_OPTION) { }`
Ответы
Ответ 1
Используя UIManager
класс
import javax.swing.UIManager;
UIManager UI=new UIManager();
UI.put("OptionPane.background",new ColorUIResource(255,0,0));
UI.put("Panel.background",new ColorUIResource(255,0,0));
или
UIManager UI=new UIManager();
UI.put("OptionPane.background", Color.white);
UI.put("Panel.background", Color.white);
JOptionPane.showMessageDialog(null,"Text","SetColor",JOptionPane.INFORMATION_MESSAGE);
Ответ 2
Изображение JOptionPane
Для тех, кто имеет проблему на изображении, я нашел/адаптировал решение. В моей системе я получил этот результат, использовал ли я решение UIManager, как опубликовали другие, или сделал JDialog и использовал jd.getContentPane(). SetBackground (Color.white). Итак, вот работа, с которой я столкнулся, где вы рекурсивно перебираете каждый компонент в JOptionPane и устанавливаете каждый цвет фона JPanel:
private void getComponents(Container c){
Component[] m = c.getComponents();
for(int i = 0; i < m.length; i++){
if(m[i].getClass().getName() == "javax.swing.JPanel")
m[i].setBackground(Color.white);
if(c.getClass().isInstance(m[i]));
getComponents((Container)m[i]);
}
}
В вашем коде, где вы хотите, чтобы сообщение всплывало, что-то вроде строк:
pane = new JOptionPane("Your message here",
JOptionPane.PLAIN_MESSAGE ,JOptionPane.DEFAULT_OPTION);
getComponents(pane);
pane.setBackground(Color.white);
jd = pane.createDialog(this, "Message");
jd.setVisible(true);
Где JOptionPane pane
и JDialog jd
ранее были созданы. Надеюсь, это поможет любому, у кого была эта проблема.
Ответ 3
Используйте что-то подобное, чтобы изменить цвет фона только для этого отображения одного сообщения, а не для всей системы...
Object paneBG = UIManager.get("OptionPane.background");
Object panelBG = UIManager.get("Panel.background");
UIManager.put("OptionPane.background", new Color(...));
UIManager.put("Panel.background", new Color(...));
int ret = messageBox(msg, null, (short)type);
UIManager.put("OptionPane.background", paneBG);
UIManager.put("Panel.background", panelBG);
Ответ 4
Используйте этот код, если у вас есть такая же проблема, как и erik k atwood. Это решает проблему:
UIManager.put("OptionPane.background", Color.WHITE);
UIManager.getLookAndFeelDefaults().put("Panel.background", Color.WHITE);