Mudar cor do Jlabel quando passar o mause

5 respostas
M

Olá pessoal,
gostaria de saber como mudar a cor do label quando passar o mause por cima ? como acontece com o Netbeans.
Tentei esses métodos com o mause event mas não deu certo.
Segue o código :

private void jLabel3MouseEntered(java.awt.event.MouseEvent evt) {                                     
        
        jLabel3.setForeground(Color.red);
    }                                    

    private void jLabel3MouseExited(java.awt.event.MouseEvent evt) {                                    
        
         jLabel3.setForeground(Color.black);
    }

Att,
Minato.

5 Respostas

H

@Minato25, verifique se os métodos estão sendo chamados pelo listener.

Segue um código de exemplo:

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class Frame extends JFrame {

	private JPanel contentPane;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Frame frame = new Frame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public Frame() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);

		JLabel lblNewLabel = new JLabel("Teste");
		lblNewLabel.setBounds(124, 90, 205, 29);
		lblNewLabel.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseEntered(MouseEvent arg0) {
				lblNewLabel.setForeground(Color.RED);
			}

			@Override
			public void mouseExited(MouseEvent e) {
				lblNewLabel.setForeground(Color.BLACK);
			}
		});
		contentPane.setLayout(null);
		contentPane.add(lblNewLabel);
	}

}

Abcs!

M

Oi, é porque em vez de uma String eu coloquei uma imagem no label. Na verdade acho que não me expressei bem, eu quero que quando o usuário passe o mause em cima da imagem o label tenha as suas “dimensões” realçadas, como acontece com os ícones do NetBeans onde se percebe as dimensões do label (fica um pouco mais escuro) com a imagem.
Tem como fazer isso?

Att,
Minato.

H

Você pode usar um JButton no lugar do JLabel:

import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class Frame extends JFrame {

	private JPanel contentPane;

	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Frame frame = new Frame();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public Frame() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);

		contentPane.setLayout(null);

		JButton btnNewButton = new JButton("New button");
		desfocarBotao(btnNewButton);

		btnNewButton.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseEntered(MouseEvent arg0) {
				focarBotao(btnNewButton);
			}

			@Override
			public void mouseExited(MouseEvent e) {
				desfocarBotao(btnNewButton);
			}

		});
		btnNewButton.setBounds(27, 134, 89, 23);
		contentPane.add(btnNewButton);
	}

	private void focarBotao(JButton btnNewButton) {
		btnNewButton.setBorderPainted(true);
		btnNewButton.setFocusPainted(true);
		btnNewButton.setContentAreaFilled(true);
	}

	private void desfocarBotao(JButton btnNewButton) {
		btnNewButton.setBorderPainted(false);
		btnNewButton.setFocusPainted(false);
		btnNewButton.setContentAreaFilled(false);
	}

}

M

É porque tem que ser em um label com imagem mesmo.
Não tem como fazer isso com um label ao invés de um botão?

Att,
Minato

P

No caso de imagem, a soluçao que vejo e alterar a imagem em si.

Criado 1 de abril de 2016
Ultima resposta 2 de abr. de 2016
Respostas 5
Participantes 3