Alterar a cor do JOptionPane

Eu estou precisando mudar a cor do JOptionPane… para isso eu criei uma herança dessa classe… mas mesmo assim ainda não conseguir mudar… vou postar meu codigo… talvez alguem encontre o erro que eu não conseguir achar…

package mensagem;
import java.awt.*;

public class Mensagem extends javax.swing.JOptionPane {

public Mensagem() {
    this.setBackground(Color.pink);
}

}

E aqui está o codigo qdo eu chamo a classe Mensagem

Mensagem c = new Mensagem();
c.showMessageDialog(null, “Dados salvos com sucesso!”, “Confirmação”, JOptionPane.PLAIN_MESSAGE);

Amigo…
Isto não é possivel…pois, setBackground é um método da Classe Window…presente no Pacote AWT…

No teu caso …estamos utilizando o Swing…

ok…

Não tem nenhum jeito então para mudar a cor do JOptionPane???

Sinceramente não…

Ja tentei tb eu não consegui…

po…cria uma interfacezinha semelhante, em uma classe estatica, seus metodos todos estaticos também, permitindo assim que possam ser chamados sem instancialos, assim como JOptionPane, e um atributo ao qual o showMessageDialog (como exemplo, outros metodos tb), receba sendo a cor do fundo, ou o que vc quer…

acredito eu que na documentação ou em algum lugar vc tenha o codigo da classe, assim vc toma como base, ou copia e altera certas coisas, pega o proprio metodo ja criado usa o codigo…

ao aproveitar o codigo, vc pode adiciona outro metodo la identico, mais que na assinatura do metodo rerceba alem dos valores convencionais, um objeto Color, e o aplique como plano de fundo da janelinha…

espero ter ajudado…

1 curtida

PO cara não da pra fazer uma String e armazenar em uma variável e depois mandala exibir?
no jOptionPane

Tente assim:

JOptionPane pane = new JOptionPane("Dados salvos com sucesso!"); JDialog dlgPane = pane.createDialog(null, "Confirmação"); dlgPane.setBackground(Color.RED); dlgPane.setVisible(true);

Boa ViniGodoy :stuck_out_tongue:

é acho que não da.

aqui não pegou

:smiley:

para alterar a cor de um JOptionPane e preciso setar uma propriedade na classe UIManager

tenta assim no construtor da sua classe antes de tudo

UIManager.getDefaults().put("OptionPane.background",new Color(217,232,238));
UIManager.put ("Panel.background", new Color(217,232,238));

vai ficar azul claro!

para mudar mais propriedade na JOptionPane e outros componentes dê uma busca no google na documentacao da UIManager, etc.

1 curtida

Só um detalhe… alterar o UIManager vai alterar a aparência de TODOS os JOptionPanes abertos a partir do comando. Talvez seja essa mesmo a intenção, mas não custa avisar. :slight_smile:

é mesmo vinicius, esqueci de mencionar isso!

valeu por acrescentar sua observação!

Então cara da uma olhada aqui que tem bastante coisa legal:

http://www.java2s.com/Tutorial/Java/0240__Swing/CustomizingaJOptionPaneLookandFeel.htm

E está classe de exemplo:

package com.mitrais.cs.ui.derivedcomponent;
 
 
 
import java.awt.Component;
 
import java.awt.HeadlessException;
 
 
 
import javax.swing.Icon;
 
import javax.swing.JDialog;
 
import javax.swing.JOptionPane;
 
import javax.swing.JRootPane;
 
import javax.swing.UIManager;
 
 
 
import com.mitrais.cs.ui.util.SkinConstants;
 
 
 
public class ClinicOptionPane extends JOptionPane {
 
 
 
	public static int showOptionDialog(Component parentComponent,
 
	        Object message, String title, int optionType, int messageType,
 
	        Icon icon, Object[] options, Object initialValue) 
 
	        throws HeadlessException {
 
	        JOptionPane             pane = new ClinicBaseOptionPane(message, messageType,
 
	                                                       optionType, icon,
 
	                                                       options, initialValue);
 
 
 
	        pane.setInitialValue(initialValue);
 
	        pane.setBackground(SkinConstants.SCREEN_BASE_BACKGROUND_COLOR);     	     	        	        
 
	        pane.setComponentOrientation(((parentComponent == null) ?
 
		    getRootFrame() : parentComponent).getComponentOrientation());	       
 
	        int style = styleFromMessageType(messageType);
 
	        JDialog dialog = pane.createDialog(parentComponent, title);	  
 
 
 
	        pane.selectInitialValue();
 
	        for(int i = 0; i < pane.getComponentCount(); i++){
 
	        	Component comp = pane.getComponent(i);
 
	        	if(comp != null){
 
	        		comp.setBackground(SkinConstants.SCREEN_BASE_BACKGROUND_COLOR);	        		
 
	        	}
 
	        }
 
	        dialog.show();
 
	        dialog.dispose();
 
 
 
	        Object        selectedValue = pane.getValue();
 
	        
 
	        if(selectedValue == null)
 
	            return CLOSED_OPTION;
 
	        if(options == null) {
 
	            if(selectedValue instanceof Integer)
 
	                return ((Integer)selectedValue).intValue();
 
	            return CLOSED_OPTION;
 
	        }
 
	        for(int counter = 0, maxCounter = options.length;
 
	            counter < maxCounter; counter++) {
 
	            if(options[counter].equals(selectedValue))
 
	                return counter;
 
	        }
 
	        return CLOSED_OPTION;
 
	    }
 
	
 
 
 
    public static int showConfirmDialog(Component parentComponent,
 
            Object message, String title, int optionType,
 
            int messageType, Icon icon) throws HeadlessException {
 
            return showOptionDialog(parentComponent, message, title, optionType,
 
                                    messageType, icon, null, null);
 
        }
 
 
 
    public static int showConfirmDialog(Component parentComponent,
 
            Object message, String title, int optionType, int messageType) 
 
            throws HeadlessException {
 
            return showConfirmDialog(parentComponent, message, title, optionType,
 
                                    messageType, null);
 
        }
 
	
 
	private static int styleFromMessageType(int messageType) {
 
        switch (messageType) {
 
        case ERROR_MESSAGE:
 
            return JRootPane.ERROR_DIALOG;
 
        case QUESTION_MESSAGE:     
 
        	return JRootPane.QUESTION_DIALOG;    
 
        case WARNING_MESSAGE:
 
            return JRootPane.WARNING_DIALOG;
 
        case INFORMATION_MESSAGE:
 
            return JRootPane.INFORMATION_DIALOG;
 
        case PLAIN_MESSAGE:
 
        default:
 
            return JRootPane.PLAIN_DIALOG;
 
        }
 
    }   
 
}

Oi, dá pra mudar cor, tamanho, tipo do fonte, por em itálico, negrito e muitas outras coisas usando código HTML antes do texto a ser exibido, conforme exemplo abaixo:

JOptionPane.showMessageDialog(null, "<html><font color=blue face=arial><i><b> Olá Mundo! = ");
1 curtida