Array
(
)

Mudar cor do Botão....

Lima_will
   - 06 out 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?

William Siqueira
   - 07 out 2009

Oi, Usa o setBackground. Um exemplo(liga não, sou fã de JavaSwing :P): #Código

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

}

0
|
0

Daniel Benetti
   - 06 ago 2010

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]Clique na imagem para abrir em uma nova janela[/url] [url=http://uploaddeimagens.com.br/imagem/index/boto_errado.gif]Clique na imagem para abrir em uma nova janela[/url]

0
|
0

Ronie Brunhara
   - 17 mar 2013


Citação:
="jesuino"]Oi, Usa o setBackground. Um exemplo(liga não, sou fã de JavaSwing :P): #Código

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

0
|
0

Ms27817
|
MVP
    17 mar 2013

Basta comparar a cor e atribuir a seguinte: #Código

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.

0
|
0

Rodrigo Brunhara
   - 17 mar 2013

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

0
|
0

Ronie Brunhara
   - 17 mar 2013


Citação:
="ms27817"]Basta comparar a cor e atribuir a seguinte: #Código

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!

0
|
0

Ms27817
|
MVP
    17 mar 2013

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

0
|
0

Sheap
   - 26 fev 2015

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.

0
|
0

Ricardo Staroski
   - 26 fev 2015

Para que a cor de fundo fique visível, seu JButton precisa estar opaco. Depois que você o instanciou, faça um #Código

meuBotao.setOpaque(true);
Depois disso, você vai perceber a mudança de cor com o #Código
meuBotao.setBackground(instanciaDaCorDesejada);

0
|
0

Wellingtpm
   - 26 fev 2015

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

0
|
0