Mudar cor do Botão....

06/10/2009

É possivel fazer o botão mudar de cor? Tipo ele está na cor verde e se ocorrer determinado evento fazer o botão mudar de cor, se for possivel como o fazer?

Lima_will

Respostas

07/10/2009

William Siqueira

Oi, Usa o setBackground. Um exemplo(liga não, sou fã de JavaSwing :P):
package testeSwing;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class MudaCorBotao extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private JButton btn;

	private final Color C1 = Color.YELLOW, C2 = Color.GREEN;

	public MudaCorBotao() {
		super("Mudar cor do botão");
		setSize(300, 300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLayout(null);
		

		add(btn = new JButton("Mudar Cor"));
		btn.setBackground(C1);
		btn.setBounds(5, 5, 100, 25);

		btn.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				//Se for a cor um, então mudo para a cor 2...
				btn.setBackground(btn.getBackground() == C1 ? C2 : C1);
			}
		});
		
		
	}

	public static void main(String[] args) {
		new MudaCorBotao().setVisible(true);
	}

}

Responder Citar

06/08/2010

Daniel Benetti

Olá, sei que o post já tem um ano, mas acabo de ver que estou com um problema relativo a exatamente esse assunto, estou desenvolvendo uma aplicação para Win XP e até hoje estava usando o tema clássico do Windows (aquele com as barras e janelas cinza, era default no win98), onde o botão do meu programa realmente ficava da cor que eu queria, mas hoje a aplicação foi testada em um outro computador com XP e com o tema do próprio XP (aquele mais colorido), o q acontece é que apenas as bordas do botão mudam de cor, e não o botão todo, abaixo a imagem dos dois casos. O codigo que usei foi exatamente esse que vc postou para testar.... Alguem pode ajudar? Grato. [url=http://uploaddeimagens.com.br/imagem/index/boto_correto.gif][img]http://uploaddeimagens.com.br/imagem/ver/boto_correto.gif[/img][/url] [url=http://uploaddeimagens.com.br/imagem/index/boto_errado.gif][img]http://uploaddeimagens.com.br/imagem/ver/boto_errado.gif[/img][/url]
Responder Citar

17/03/2013

Ronie Brunhara

Oi, Usa o setBackground. Um exemplo(liga não, sou fã de JavaSwing :P):
package testeSwing;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;

public class MudaCorBotao extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private JButton btn;

	private final Color C1 = Color.YELLOW, C2 = Color.GREEN;

	public MudaCorBotao() {
		super("Mudar cor do botão");
		setSize(300, 300);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLayout(null);
		

		add(btn = new JButton("Mudar Cor"));
		btn.setBackground(C1);
		btn.setBounds(5, 5, 100, 25);

		btn.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent arg0) {
				//Se for a cor um, então mudo para a cor 2...
				btn.setBackground(btn.getBackground() == C1 ? C2 : C1);
			}
		});
		
		
	}

	public static void main(String[] args) {
		new MudaCorBotao().setVisible(true);
	}

}

SE eu quisesse utilizar um terceira cor como ficaria a FORMULA de C1, C2 e C3
Responder Citar

17/03/2013

Ms27817 Currículo

Basta comparar a cor e atribuir a seguinte:
if(btn.getBackground() == C1) {
   btn.setBackground(C2);
} else if(btn.getBackground() == C2) {
   btn.setBackground(C3);
} else {
   btn.setBackground(C1);
}
Você poderia também substituir esses if´s usando um Map, onde a chave seria a cor atual e o valor seria a cor seguinte.
Responder Citar

17/03/2013

Rodrigo Brunhara

Ai como eu faria...pegar por exemplo em uma tela minha tenho o valor de TFx,TFy para gerar a matriz, quando eu clicar em gerar matriz o valor de TFx,TFy vai gerar a matriz de botoes que to fazendo na outra tela!! como faço issso, ouseja pegar aquele valor jogar no "for" e e assim faz a a matriz de botoes ..especificada pelo usuario tem como observa esse codigo para mim : é o meu ai ver tem como me ajudar http://javafree.uol.com.br/topic-889560-Sabe-como-pegar-o-valor-de-TxtField-de-Jframe-e-madar-o-valor-x-para-preencher-a-matriz.html
Responder Citar

17/03/2013

Ronie Brunhara

Basta comparar a cor e atribuir a seguinte:
if(btn.getBackground() == C1) {
   btn.setBackground(C2);
} else if(btn.getBackground() == C2) {
   btn.setBackground(C3);
} else {
   btn.setBackground(C1);
}
Você poderia também substituir esses if´s usando um Map, onde a chave seria a cor atual e o valor seria a cor seguinte.
DEU CERTO OBRIGADO NOVAMENTE, se puder passar seu email para qualquer outra duvida agradeço!
Responder Citar

17/03/2013

Ms27817 Currículo

Então, dúvidas somente pelo fórum. Sem MP ou email
Responder Citar

26/02/2015

Sheap

estou com o mesmo problema do criador do tópico, quando altero pelo NetBeans o setBackground do botão altera somente o contorno o preechimento do botão não muda a cor.
Responder Citar

26/02/2015

Ricardo Staroski

Para que a cor de fundo fique visível, seu JButton precisa estar opaco. Depois que você o instanciou, faça um
meuBotao.setOpaque(true);
Depois disso, você vai perceber a mudança de cor com o
meuBotao.setBackground(instanciaDaCorDesejada);
Responder Citar

26/02/2015

Wellingtpm

Olá Lima_will, que tal criar um botão "personalizado"? ao invés de criar um JButton propriamente dito, crie um JLabel e adicione à ele um Evento de ação ao clicar e finalmente escolha um ícone para seu botão (ícones com fundo transparentes são ideais) e set o ícone do JLabel e pronto! forte abraço
Responder Citar