Controlar o foco dos botões na tela

6 respostas
C

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!

6 Respostas

Anime

Oi constantini,

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

C

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!

C

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?

Anime

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:

C

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!

Anime

ah ta,que ajuda… :stuck_out_tongue:

Fico muito feliz por ter conseguido… :wink:

Criado 27 de dezembro de 2010
Ultima resposta 27 de dez. de 2010
Respostas 6
Participantes 2