Как изменить цвет фона 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) { }`
4 ответов
С помощью 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);
для тех, кто имеет проблему в изображении, я нашел / адаптировал решение. В моей системе я получил этот результат, использовал ли я решение UIManager, как другие опубликовали, или сделал JDialog и использовал jd.getContentPane ().setBackground(цвет.белый.) Итак, вот работа, которую я придумал, где вы рекурсивно проходите через каждый компонент в 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
ранее был создан. Надеюсь, это поможет всем, у кого была эта проблема.
Используйте что-то вроде этого, чтобы изменить цвет фона только для этого отображения одного сообщения, а не всей системы...
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);
используйте этот код, если у вас та же проблема, что и у Эрика к. Этвуда. Это решает проблему:
UIManager.put("OptionPane.background", Color.WHITE);
UIManager.getLookAndFeelDefaults().put("Panel.background", Color.WHITE);