Alterar a cor do JOptionPane

14 respostas
N

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

14 Respostas

Robsonramosabrao

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

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

Robsonramosabrao

Sinceramente não…

Ja tentei tb eu não consegui…

maior_abandonado

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…

colosos_colossus

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

ViniGodoy

Tente assim:

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

Alchemist

Boa ViniGodoy :stuck_out_tongue:

colosos_colossus

é acho que não da.

colosos_colossus

aqui não pegou

:smiley:

argentinaluiz

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.

ViniGodoy

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:

argentinaluiz

é mesmo vinicius, esqueci de mencionar isso!

valeu por acrescentar sua observação!

Alchemist

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;
 
        }
 
    }   
 
}
R

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! = ");
Criado 2 de dezembro de 2007
Ultima resposta 2 de mar. de 2014
Respostas 14
Participantes 8