JOptionPane с другим фоном
Я пытаюсь изменить цвет фона моего JOptionPane через константы UIManager, фоны текстовой области и области кнопок не затрагиваются.
Я разместил свой код:3
Как я могу изменить их фон тоже?
public LoginFINAL() {
this.setImagen("/imagenes/FondoLogin.png");
UIManager.put("OptionPane.background",Color.RED );
UIManager.put("Panel.background",Color.RED);
UIManager.put("Button.background",Color.RED);
initComponents();
jLabel3.setVisible(false);
setLocationRelativeTo(null);
textUsers.requestFocus();
}
И вот как я называю JoptionPane
else{
JOptionPane.showMessageDialog(rootPane, "pls");
}
Теперь лучше?
1 ответ
У меня была такая же проблема, вот мое решение:
Для тех, у кого есть проблемы с изображением, я нашел / адаптировал решение. В моей системе я получил такой результат, независимо от того, использовал ли я решение 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
ранее были созданы. Надеюсь, что это поможет любому, кто имел эту проблему.