Java - Eventos de botón.

   
Vista:
Imágen de perfil de Javier

Eventos de botón.

Publicado por Javier (26 intervenciones) el 21/05/2017 12:59:31
Hola, hice un trabajo hace poco hice un trabajo en donde tenía que crear un par de botones y capturar los eventos al pulsar los botones con MouseListener. Al ser sólo 2 botones los cree con JButton ambos botones. La duda me surgió cuando pense...Si tengo que crear 10 botones, ¿Cómo hago esto sin crear uno a uno? Entonces hice:
1
2
3
4
for(int i = 0; i<10; i++) {
fila2.add(botones = new JButton(String.valueOf(i)));
            botones.addMouseListener(this);
}

fila2 es un JPanel que es añadido al JFrame y botones es un objeto JButton. El código funciona y me crea los 10 botones y los muestra en el JFrame, pero a la hora de tratar con los eventos, no he conseguido que los botones puedan capturar los eventos. ¿Cómo lo puedo conseguir? Quiero conseguirlo con la interfaz MouseListener.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Eventos de botón.

Publicado por Jordi jordidalmaucolell2@hotmail.com (127 intervenciones) el 21/05/2017 14:55:41
Cuando un botón y algunos componentes de swing son usados, el evento se captura mediante ActionListener. MouseListener sería para cosas secundarias como para cambio de imagen al entrar el mouse, cambios de tamaño, etc...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier

Eventos de botón.

Publicado por Javier (26 intervenciones) el 21/05/2017 17:40:54
Ya, lo se. Pero como en el ejercio es utilizando la interfaz MouseListener, me preguntaba si se podría hacer de la manera que yo digo o por el contrario para hacerlo así, es necesario utilizar ActionListener.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Eventos de botón.

Publicado por Jordi (127 intervenciones) el 21/05/2017 18:02:38
Yo he hecho esto, pero aparte de que mi codigo es bastante malo, no tiene demasiado sentido tener que delegar TODAS las funciones de un JButton a un MouseListener. Yo haría que el ActionListener se encargue de cuando el botón es pulsado y que MouseListener se encargue de las funciones secundarias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
 
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class BotoML implements MouseListener{
 
	JFrame finestra;
	JButton boto;
 
	public BotoML() {
 
		finestra = new JFrame();
		finestra.setSize(300, 300);
		finestra.setLocationRelativeTo(null);
		finestra.setLayout(null);
		finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
		boto = new JButton("HOLAA");
		boto.addMouseListener(this);
		boto = treureActionListener(boto);
		boto.setBounds(80, 80, 80, 80);
 
		finestra.add(boto);
		finestra.setVisible(true);
 
	}
 
	public JButton treureActionListener(JButton j){
 
		JButton aux = j;
 
		for(ActionListener a : j.getActionListeners()){
 
			aux.removeActionListener(a);
 
		}
 
		return aux;
 
	}
 
	@Override
	public void mouseClicked(MouseEvent arg0) {}
 
	@Override
	public void mouseEntered(MouseEvent arg0) {}
 
	@Override
	public void mouseExited(MouseEvent arg0) {}
 
	@Override
	public void mousePressed(MouseEvent arg0) {}
 
	@Override
	public void mouseReleased(MouseEvent arg0) {
 
		System.out.println("HOLA :D");
 
	}
 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new BotoML();
 
	}
}

Sé bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier

Eventos de botón.

Publicado por Javier (26 intervenciones) el 26/05/2017 19:44:09
Muchas gracias por responder
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar