Saltar al contenido

¿Cómo cambiar el color de fondo de JOptionPane?

Solución:

Usando el UIManager clase

 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));

o

 UIManager UI=new UIManager();
 UI.put("OptionPane.background", Color.white);
 UI.put("Panel.background", Color.white);

 JOptionPane.showMessageDialog(null,"Text","SetColor",JOptionPane.INFORMATION_MESSAGE);

Imagen de JOptionPane

Para cualquiera que tenga el mismo problema como en la imagen de arriba, encontré / adapté una solución. En mi sistema, obtuve ese resultado, ya sea que usé la solución UIManager como otros han publicado, o hice un JDialog y usé jd.getContentPane().setBackground(Color.white). Así que aquí está la solución que se me ocurrió, donde recorre recursivamente cada componente en JOptionPane y establece el color de fondo de cada 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]);
    }
}

En su código donde desea que aparezca el mensaje emergente, algo como:

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);

Dónde JOptionPane pane y JDialog jd han sido creados previamente. Espero que esto ayude a cualquiera que haya tenido ese problema.

Use algo como esto para cambiar el color de fondo solo para este mensaje y no para todo el sistema …

    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);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *