Alterar cor do JToggleButton

6 respostas
P

Boa tarde,

Estou montando o projeto de tcc da faculdade e montei um layout para o software onde quando a pessoa passe o mouse em cima do botão, ao invés da cor do botão ficar azulzinho, que é a padrão que vem, eu gostaria de mudar para laranja.

A parte de fazer o evento ao passar o mouse em cima, sem problemas, o problema é como alterar a cor.

O método: bt_home.setForeground(Color.orange); altera a cor do texto que esta no botão.
O método: bt_home.setBackground(Color.orange); altera a cor do fundo do botão e quando digo fundo seria atrás do botão, como se fosse uma parede com um quadro, onde o quadro seria o botão, neste caso, ele alteraria a cor da parede e não do quadro.

Grato desde já.

6 Respostas

F

Não entendi.
Usando o setBackground(), fica assim. Não é isso que vc quer?


P

não, não, queria que ficasse assim neste modelo mais ou menos:

mas ele está assim:

e se eu uso o setBackground() ele fica assim:

Resumidamente, eu queria mudar o tom do azul para laranja.

F

Ahh, agora que vi que é ToggleButton. Não pode usar JButton mesmo não?

Nunca usei Toggle hahaha.

P

Pode ser tb.

Mas o JButton acontece a mesma coisa tb :S

Acho que a mesma solução para o JToggle eh para o JButton.

Alguma idéia para o JButton?

G

Podes criar uma classe que estende a classe JButton ou JToggleButton e sobrescrever os métodos getImage() e getRover(), assim mais ou menos:

public class Botao extends JButton{
    
    private Icon image;
    private Icon rover;

    public Botao(String imagePath, String roverPath) {
        try {
            image = new ImageIcon(ImageIO.read(Thread.currentThread().getClass().getResourceAsStream(imagePath)));
            rover = new ImageIcon(ImageIO.read(Thread.currentThread().getClass().getResourceAsStream(roverPath)));
        } catch (IOException ex) {
            Logger.getLogger(Botao.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }

    public Icon getImage() {
        return image;
    }

    public Icon getRover() {
        return rover;
    }
 
}
Ai passas como parâmetro duas imagens que criasses, tipo no photoshop ou paint(só para os mais hardcore xD) e ele vai colocar essas imagens nos botões, com isso podes fazer botões mais estilizados...

Obs.: Image é a imagem que vai aparecer no botão, imageRover é a imagem que aparece quando o mouse está sobre o botão

Pra colocar as imagens nos botões é só fazer assim:

Botao botaoImages = new Botao("/images/botao.png", "/images/botaoRover.png"));
meuBotao.setIcon(botaoImages.getImage);
meuBotao.setRolloverIcon(botaoImages.getRover);
O problema de tu não estar conseguindo pelo setBackground, é que o teu lookAndFeel é windows, e não Nimbus, se não gostar dessa solução que eu te dei, sugiro olhar aqui

Qualquer dúvida é só perguntar.
E se alguém quiser fazer uma crítica do meu código, pode postar aqui, me ajudaria bastante :D

P

Humm … não deu certo não.

Ele perde o efeito de ir escurecendo a cor. Só queria mudar do azul para o laranja msm.

Mas gostei deste site que postou, tem bastante coisa que acho que vou usar.

Criado 12 de setembro de 2012
Ultima resposta 12 de set. de 2012
Respostas 6
Participantes 3