MouseListener [RESOLVIDO]

4 respostas
pedroroxd
Pessoal, desculpe sse a dúvida for noob, mas é que to começando em eclipse, e não sei se isso é normal.. Eu tava brincando com 1 frame aki em que quando o mouse passa em cima do jTextField, ele muda de cor... Então adicionei um MouseListener.. O código ficou assim:
jTextFieldNome01.addMouseListener(new MouseListener() {
			@Override
			public void mouseEntered(MouseEvent arg0) {
				jTextFieldNome01.setBorder(new LineBorder(Color.RED));
			}

			public void mouseExited(MouseEvent arg0) {
				jTextFieldNome01.setBorder(jTextFieldNome02.getBorder());
			}

			@Override
			public void mouseClicked(MouseEvent e) {
			}

			@Override
			public void mousePressed(MouseEvent e) {
			}

			@Override
			public void mouseReleased(MouseEvent e) {
			}

		});
Realmente precisa adicionar esse danto de @Override, mesmo se eu não for utilizar? É pq tenho 15 jTextField.. Ficar fazendo isso em todos é fod@ !

4 Respostas

M

Não é necessário ter Overrides. O objetivo de usá-lo é para garantir que exista o método em uma das interfaces que a classe implementa ou em uma classe que ele estende.

Isso evita que você mude o nome de um método na classe pai um dia e o método que você sobrescreveu fique sem inválido.

S

Vc precisa estar com todos esses métodos na sua classe, não precisa implementá-los, não importa se vc vai utilizá-los ou não. Vc está usando a Interface MouseListener que tem esses métodos, então vc precisa ao mínimo declará-los, caso vc apague algum desses métodos o java vai reclamar e sua aplicação não irá mais rodar.

ViniGodoy

MouseListener é uma interface. E todos os métodos de uma interface devem ser implementados. Isso é assim no Eclipse e no Netbeans. Porém, existe uma classe chamada MouseAdapter, que implementa a interface mouseListener, mas deixa todas as implementações em branco. Assim, basta estende-la e dar override só nos métodos pertinentes para você:

jTextFieldNome01.addMouseListener(new MouseAdapter() {  
   @Override  
   public void mouseEntered(MouseEvent arg0) {  
      jTextFieldNome01.setBorder(new LineBorder(Color.RED));  
   }  

   @Override
   public void mouseExited(MouseEvent arg0) {  
       jTextFieldNome01.setBorder(jTextFieldNome02.getBorder());  
   }  
});

Se vários JTextFields da sua aplicação vão realizar o mesmo comportamento, você pode criar o MouseListener separadamente, e depois só defini-lo nos JTextField.

private class ColorListener extends MouseAdapter
{
   private JTextField txtField;
   private Color color;

   public ColorListener(JTextField txtField, Color color) {
      this.txtField = txtField; 
      this.color = color;
   }

   @Override  
   public void mouseEntered(MouseEvent arg0) {  
      txtField.setBorder(new LineBorder(color));  
   }  

   public void mouseExited(MouseEvent arg0) {  
       txtField.setBorder(new JTextField().getBorder());  
   }
}


jTextFieldNome01.addMouseListener(new ColorListener(jTextFieldNome01, Color.RED));
jTextFieldNome02.addMouseListener(new ColorListener(jTextFieldNome02, Color.GREEN));

Aliás, o java faz coisas similares para outros listeners, como no caso do WindowListener e a classe WindowAdapter.

pedroroxd

Ahhh
Sakei!
VLws ae =)

Criado 15 de dezembro de 2009
Ultima resposta 15 de dez. de 2009
Respostas 4
Participantes 4