Eventos de Java
Eventos de Java
Los Listeners (oyentes o escuchadores en español) se encargan de controlar los eventos, esperan a que el evento se produzca y realiza una serie de acciones. Según el evento,
necesitaremos un Listener que lo controle.
Cada Listener tiene una serie de métodos que debemos implementar obligatoriamente, aunque solo queramos usar uno solo de ellos.
Vamos a ver los distintos Listeners que existen, la definición de sus métodos y los eventos que controlan:
FocusListener Se produce cuando un componente gana o pierde el foco, es decir, que esta seleccionado. public void focusGained(FocusEvent e) Recibir o perder el foco.
MouseMotionListener Se produce con el movimiento del mouse. public void mouseDragged(MouseEvent e) Según el Listener:
Estos son los más comunes, otros eventos los veremos con más profundidad en posteriores posts
});
};
componente.add"Tipo evento"("nombre");
Por ejemplo:
1 boton1.addActionListener(new ActionListener(){
2 public void actionPerformed (){
3 //Acciones
4 }
});
5
De la segunda manera seria así:
1 import java.awt.EventQueue;
import javax.swing.*;
2
import java.awt.event.*;
3
4 public class EjemploEvento extends JFrame {
5
6 private JPanel contentPane;
7 private JTextField textField;
8 private JTextField textField_1;
private JTextField textField_2;
9 private JComboBox<String> comboBox;
10 private JRadioButton rdbtnOpcion;
11 private JRadioButton rdbtnOpcion_1;
12 private JRadioButton rdbtnOpcion_2;
private JLabel lblEstasSobreLa;
13
14 /**
15 * Launch the application.
16 */
17 public static void main(String[] args) {
18 EventQueue.invokeLater(new Runnable() {
public void run() {
19 try {
20 EjemploEvento frame = new EjemploEvento();
21 frame.setVisible(true);
22 } catch (Exception e) {
e.printStackTrace();
23
}
24 }
25 });
26 }
27
28 /**
29 * Create the frame.
*/
30
public EjemploEvento() {
31
32 //Añade un titulo, no es estrictamente necesario
33 setTitle("Titulo de la ventana");
34
35 /*
36 * Coordenadas x y de la aplicacion y su altura y longitud,
* si no lo indicamos aparecera una ventana muy pequeña
37 */
38 setBounds(400, 200, 655, 520);
39
40 /*
41 * Indica que cuando se cierre la ventana se acaba la aplicacion,
* si no lo indicamos cuando cerremos la ventana la aplicacion seguira funcionando
42 */
43 setDefaultCloseOperation(EXIT_ON_CLOSE);
44
45 //Hace visible la ventana, si no lo hacemos no veremos la aplicacion
46 setVisible(true);
47
48 //Creamos el panel
contentPane =new JPanel();
49
50 //Indicamos su diseño
51 contentPane.setLayout(null);
52
53 //asigno el pannel a la ventana
54 setContentPane(contentPane);
55
//Componentes
56
57 //Etiquetas
58
59 JLabel lblEscribeElNombre = new JLabel("Escribe el nombre el nombre de una persona sin digitos");
60 lblEscribeElNombre.setBounds(369, 32, 229, 25);
61 contentPane.add(lblEscribeElNombre);
62
JLabel lblEligeUnaOpcin = new JLabel("Elige una opci\u00F3n:");
63 lblEligeUnaOpcin.setBounds(176, 32, 109, 14);
64 contentPane.add(lblEligeUnaOpcin);
65
66 JLabel lblPulsaElBoton = new JLabel("Pulsa el boton");
67 lblPulsaElBoton.setBounds(47, 32, 85, 14);
68 contentPane.add(lblPulsaElBoton);
69
lblEstasSobreLa = new JLabel("Estas sobre la ");
70 lblEstasSobreLa.setBounds(158, 224, 192, 14);
71 contentPane.add(lblEstasSobreLa);
72
73 JLabel lblSoloSePuede = new JLabel("Solo se puede escribir digitos");
74 lblSoloSePuede.setBounds(371, 208, 193, 14);
contentPane.add(lblSoloSePuede);
75
76 JLabel lblNombreElegido = new JLabel("Nombre Elegido");
77 lblNombreElegido.setBounds(175, 124, 110, 14);
78 contentPane.add(lblNombreElegido);
79
80 //Campo de texto
81
textField = new JTextField();
82 textField.setBounds(371, 68, 193, 26);
83 contentPane.add(textField);
84
85 textField_1 = new JTextField();
86 textField_1.setEditable(false);
87 textField_1.setBounds(175, 150, 141, 20);
contentPane.add(textField_1);
88
89 textField_2 = new JTextField();
90 textField_2.setBounds(371, 247, 126, 20);
91 contentPane.add(textField_2);
92
93 //Botones
94
JButton btnPulsame = new JButton("Pulsame");
95 btnPulsame.setBounds(43, 70, 89, 23);
96 contentPane.add(btnPulsame);
97
98 JButton btnAnadir= new JButton("A\u00F1adir");
99 btnAnadir.setBounds(371, 124, 89, 23);
100 contentPane.add(btnAnadir);
101
//Botones de radio
102
103 rdbtnOpcion= new JRadioButton("Opcion 1");
104 rdbtnOpcion.setBounds(43, 194, 109, 23);
105 contentPane.add(rdbtnOpcion);
106
107 rdbtnOpcion_1 = new JRadioButton("Opcion 2");
rdbtnOpcion_1.setBounds(43, 220, 109, 23);
108 contentPane.add(rdbtnOpcion_1);
109
110 rdbtnOpcion_2 = new JRadioButton("Opcion 3");
111 rdbtnOpcion_2.setBounds(43, 246, 109, 23);
112 contentPane.add(rdbtnOpcion_2);
113
//Agrupamos los botnones de radio
114 ButtonGroup bgroup = new ButtonGroup();
115 bgroup.add(rdbtnOpcion);
116 bgroup.add(rdbtnOpcion_1);
117 bgroup.add(rdbtnOpcion_2);
118
119 //Menu de opciones
comboBox = new JComboBox<>();
120 comboBox.setBounds(175, 70, 141, 22);
121 contentPane.add(comboBox);
122
123 //Añadimos opciones
124 comboBox.addItem("Fernando");
125 comboBox.addItem("Alberto");
comboBox.addItem("Arturo");
126
127 //Eventos
128
129 btnPulsame.addActionListener(new ActionListener(){
130 public void actionPerformed (ActionEvent e){
131 JOptionPane.showMessageDialog(contentPane, "¡Me has pulsado!");
132 }
});
133
134 //En este caso hemos debido de converir el componente en un atributo
135 comboBox.addActionListener(new ActionListener(){
136 public void actionPerformed (ActionEvent e){
137 textField_1.setText(comboBox.getItemAt(comboBox.getSelectedIndex()));
}
138 });
139
140 textField.addKeyListener(new KeyListener(){
141 public void keyTyped (KeyEvent e){
142 //Si el caracter introducido es un digito...
143 if (Character.isDigit(e.getKeyChar())){
//... no lo escribe
144 e.consume();
145 }
146 }
147 public void keyReleased(KeyEvent e){
148
}
149 public void keyPressed(KeyEvent e){
150
151 }
152 });
153
154 btnAnadir.addActionListener(new ActionListener(){
155 public void actionPerformed (ActionEvent e){
comboBox.addItem(textField.getText());
156
157 textField.setText("");
JOptionPane.showMessageDialog(contentPane, "Nombre Añadido");
158
}
159 });
160
161 rdbtnOpcion.addMouseListener(new MouseListener(){
162 public void mouseClicked(MouseEvent e){
163
164 }
public void mouseEntered(MouseEvent e){
165 lblEstasSobreLa.setText(lblEstasSobreLa.getText()+rdbtnOpcion.getText());
166 }
167 public void mouseExited(MouseEvent e){
168 lblEstasSobreLa.setText("Estas sobre la ");
}
169 public void mousePressed(MouseEvent e){
170
171 }
172 public void mouseReleased(MouseEvent e){
173
174 }
175 });
176
rdbtnOpcion_1.addMouseListener(new MouseListener(){
177 public void mouseClicked(MouseEvent e){
178
179 }
180 public void mouseEntered(MouseEvent e){
181 lblEstasSobreLa.setText(lblEstasSobreLa.getText()+rdbtnOpcion_1.getText());
}
182 public void mouseExited(MouseEvent e){
183 lblEstasSobreLa.setText("Estas sobre la ");
184 }
185 public void mousePressed(MouseEvent e){
186
187 }
public void mouseReleased(MouseEvent e){
188
189
190 }
});
191
192 rdbtnOpcion_2.addMouseListener(new MouseListener(){
193 public void mouseClicked(MouseEvent e){
194
195 }
196 public void mouseEntered(MouseEvent e){
197 lblEstasSobreLa.setText(lblEstasSobreLa.getText()+rdbtnOpcion_2.getText());
}
198 public void mouseExited(MouseEvent e){
199 lblEstasSobreLa.setText("Estas sobre la ");
200 }
201 public void mousePressed(MouseEvent e){
202
}
203 public void mouseReleased(MouseEvent e){
204
205 }
206 });
207
208 textField_2.addKeyListener(new KeyListener(){
public void keyTyped (KeyEvent e){
209
//Si el caracter introducido no es un digito...
210 if (!Character.isDigit(e.getKeyChar())){
211 //... no lo escribe
212 e.consume();
213 }
}
214 public void keyReleased(KeyEvent e){
215
216 }
217 public void keyPressed(KeyEvent e){
218
219 }
});
220
221
222 }
}
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
Con netBeans, simplemente hacemos click derecho en un elemento (en la parte de diseño) y elegimos en el menú Eventos, el evento queremos programar y nos aparecera por
separado en el código.
Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.