Controlar o foco dos botões na tela

Pessoal,

tenho uma janela com 5 botões, na frente de cada botão existe um label, na frente, não dentro do botão!
mas eu só posso exibir o label na frente do botão quando ele ganhar o foco, o usuário não precisa clicar, somente passar o mouse em cima do botão para o label se tornar visível, se ele tirar o mouse de cima, o label some.

tentei da seguinte maneira, mas não compila:


JLabel lblClientes = new JLabel("Clientes");
lblClientes.setFont(new Font("Comic Sans MS", Font.ITALIC, 22));
lblClientes.setBounds(95, 34, 94, 32);
frame.getContentPane().add(lblClientes);
lblClientes.setVisible(false);
		
JButton buttonClientes = new JButton("");
buttonClientes.addFocusListener(new FocusListener(){
		public void focusGained(FocusEvent arg0) {  
		 //ação desejada quando ganha o foco 
		lblClientes.setVisible(true); //ERRO AQUI
		}  
				   
		public void focusLost(FocusEvent arg0){               
		 //ação desejada quando perde o foco  
		lblClientes.setVisible(false);	 //ERRO AQUI 
		}  
});

se alguém puder dar ajuda…agradeço!

Valeu!

Oi constantini,

Se colocar o erro gerado,fica mais facil receber ajuda… :wink:

Oi Anime…

segue o erro:

xception in thread "main" java.lang.Error: Unresolved compilation problems: 
	Cannot refer to a non-final variable lblClientes inside an inner class defined in a different method
	Cannot refer to a non-final variable lblClientes inside an inner class defined in a different method

	at Inicio.initialize(Inicio.java:83)
	at Inicio.<init>(Inicio.java:45)
	at Inicio.main(Inicio.java:34)

Obrigado!

Consegui corrigir o erro, mas o label só aparece quando eu clico no botão.
Como eu faço para fazer ele aparecer quando o mouse passar sobre ele?

Olha só eu nunca fiz isso,estou tão perdida como vc,o erro não é possível se referir a uma variável lblClientes dentro de uma classe interna definida em um método diferente.
Não sei se é isso mas um esta focusGained e o outro focusLos.

Desculpe não entendi,vc quer que a mesma label fica true ou false,então deveria fazer uma condição para isso,dentro do mesmo evento…

Acho que vou confundi-lo mais… :oops:

Anime,

consegui, olha como ficou:

final JLabel lblClientes = new JLabel("Clientes");
		lblClientes.setFont(new Font("Comic Sans MS", Font.ITALIC, 22));
		lblClientes.setBounds(95, 34, 94, 32);
		frame.getContentPane().add(lblClientes);
		lblClientes.setVisible(false);
		
		JButton buttonClientes = new JButton("");
		
		buttonClientes.addMouseListener(new MouseAdapter() {   
			public void mouseEntered(MouseEvent e) {
				   lblClientes.setVisible(true);;
			    }
			     
		    public void mouseExited(MouseEvent e) {
		    	lblClientes.setVisible(false);
		    }});

Valeu pela ajuda!

ah ta,que ajuda… :stuck_out_tongue:

Fico muito feliz por ter conseguido… :wink: