Eventi e ascoltatori in Java

Ciao a tutti, oggi spiegherò come usare eventi e ascoltatori in Java, questo è molto importante nelle applicazioni grafiche.

Gli eventi sono le azioni che l’utente può eseguire, quando si esegue un evento si verifica una serie di azioni. Ad esempio, se l’utente preme un pulsante chiamato “EXIT” per chiudere l’applicazione. Un altro esempio molto utilizzato è di convalidare il testo che abbiamo introdotto in un campo di testo.

Listeners (ascoltatori o ascoltatori in spagnolo) loro sono responsabili del controllo degli eventi, attendono che l’evento si verifichi ed esegui una serie di azioni. Secondo l’evento, avremo bisogno di un ascoltatore che lo controlla.

Ogni listener ha una serie di metodi che deve essere implementato. Sebbene vogliamo solo usare uno di loro.

Le linee che utilizziamo saranno nel pacchetto Java.awt.event.

Vediamo i diversi ascoltatori che esistono , la definizione dei tuoi metodi ed eventi che controllano:

nome listener Descrizione Metodi Eventi
ActionListener si verifica quando si fa clic su un componente Se si preme ENTER con la messa a fuoco sul componente.

Public Void ActionPerformato (actionEvent e)

  • jbutton: Fare clic o premere Invio con la messa a fuoco attivata su di esso.
  • JLIST: fare doppio clic su un elemento dall’elenco.
  • jmenitem: selezionare un’opzione di menu.
  • Jtextfield: quando si preme ENTER con la messa a fuoco attivata.
KeyListener Si verifica quando si preme un tasto. A seconda del metodo, cambierà il modo di premere il tasto.

vuoto vuoto keytyped (keyevent e)
Public Void Keypressed (KeyEvent E)
Public Void KeyRELESSED (KeyEvent E)

Quando premiamo un tasto, secondo il listener:

  • Keytyped: quando premendo: quando si preme e il rilascio del tasto.
  • Keypressed: quando si preme il tasto.
  • KeyreLeased: quando si rilascia il tasto.
FocusListener Si verifica quando un componente vince o perde la messa a fuoco, cioè è selezionato.

Voide pubblica messa a fuoco (focusEvent e)
Public Void FocusLost (FocusEvent e)

ricevi o perde la messa a fuoco.
Mouselistener si verifica quando eseguiamo un’azione con il mouse.

Void pubblico MouseClicked (MouseVent E)

Public Void MouseInterred (Mousevent E)

Public Void Mousexitato (MouseVent E)

Public Void Mousepressed (MouseVent E)

Void pubblico moushesesed (mousevent e)

Secondo il listener:

  • MouseCliked: fare clic ea rilascio.
  • MOUSENTED: inserisci un componente con il puntatore.
  • Mousexited: Esci da un componente con il puntatore
  • Mousepresso: premere il pulsante.
  • Mouseleated: rilasciare il pulsante.
mousemotionlistener it Produce con il movimento del mouse.

Public Void MousedRagged (Mousevent E)
Pubblico Void Mousmoved (MouseVent E)

Secondo l’ascoltatore :

  • MouseDragged: Fare clic e trascinare un componente.
  • Mousemoved: Quando si sposta il puntatore su un

Questi sono i più comuni, altri eventi li vedremo più profondità in Post successivi

Per aggiungere un evento, seguiremo la seguente sintassi:

componente.add"tipo evento"(new "tipo evento"(){ metodos del evento});

Un altro modulo è:

"Tipo evento" "nombre"= new "tipo evento"{ metodos del evento};componente.add"Tipo evento"("nombre");

Ad esempio:

boton1.addActionListener(new ActionListener(){ public void actionPerformed (){ //Acciones }});

del secondo modo sarebbe così:

ActionListener al=new ActionListener(){ public void actionPerformed (){ //Acciones }};boton1.addActionListener(al);

È possibile che un altro componente ci si adatta a un attributo.

Lascio un esempio completo con diversi tipi di eventi:

import java.awt.EventQueue;import javax.swing.*;import java.awt.event.*;public class EjemploEvento extends JFrame {private JPanel contentPane;private JTextField textField;private JTextField textField_1;private JTextField textField_2;private JComboBox<String> comboBox;private JRadioButton rdbtnOpcion;private JRadioButton rdbtnOpcion_1;private JRadioButton rdbtnOpcion_2;private JLabel lblEstasSobreLa;/** * Launch the application. */public static void main(String args) {EventQueue.invokeLater(new Runnable() {public void run() {try {EjemploEvento frame = new EjemploEvento();frame.setVisible(true);} catch (Exception e) {e.printStackTrace();}}});}/** * Create the frame. */public EjemploEvento() {//Añade un titulo, no es estrictamente necesariosetTitle("Titulo de la ventana");/* * Coordenadas x y de la aplicacion y su altura y longitud, * si no lo indicamos aparecera una ventana muy pequeña */setBounds(400, 200, 655, 520);/* * Indica que cuando se cierre la ventana se acaba la aplicacion, * si no lo indicamos cuando cerremos la ventana la aplicacion seguira funcionando */setDefaultCloseOperation(EXIT_ON_CLOSE);//Hace visible la ventana, si no lo hacemos no veremos la aplicacionsetVisible(true);//Creamos el panelcontentPane =new JPanel();//Indicamos su diseñocontentPane.setLayout(null);//asigno el pannel a la ventanasetContentPane(contentPane);//Componentes//EtiquetasJLabel lblEscribeElNombre = new JLabel("Escribe el nombre el nombre de una persona sin digitos");lblEscribeElNombre.setBounds(369, 32, 229, 25);contentPane.add(lblEscribeElNombre);JLabel lblEligeUnaOpcin = new JLabel("Elige una opci\u00F3n:");lblEligeUnaOpcin.setBounds(176, 32, 109, 14);contentPane.add(lblEligeUnaOpcin);JLabel lblPulsaElBoton = new JLabel("Pulsa el boton");lblPulsaElBoton.setBounds(47, 32, 85, 14);contentPane.add(lblPulsaElBoton);lblEstasSobreLa = new JLabel("Estas sobre la ");lblEstasSobreLa.setBounds(158, 224, 192, 14);contentPane.add(lblEstasSobreLa);JLabel lblSoloSePuede = new JLabel("Solo se puede escribir digitos");lblSoloSePuede.setBounds(371, 208, 193, 14);contentPane.add(lblSoloSePuede);JLabel lblNombreElegido = new JLabel("Nombre Elegido");lblNombreElegido.setBounds(175, 124, 110, 14);contentPane.add(lblNombreElegido);//Campo de textotextField = new JTextField();textField.setBounds(371, 68, 193, 26);contentPane.add(textField);textField_1 = new JTextField();textField_1.setEditable(false);textField_1.setBounds(175, 150, 141, 20);contentPane.add(textField_1);textField_2 = new JTextField();textField_2.setBounds(371, 247, 126, 20);contentPane.add(textField_2);//BotonesJButton btnPulsame = new JButton("Pulsame");btnPulsame.setBounds(43, 70, 89, 23);contentPane.add(btnPulsame);JButton btnAnadir= new JButton("A\u00F1adir");btnAnadir.setBounds(371, 124, 89, 23);contentPane.add(btnAnadir);//Botones de radiordbtnOpcion= new JRadioButton("Opcion 1");rdbtnOpcion.setBounds(43, 194, 109, 23);contentPane.add(rdbtnOpcion);rdbtnOpcion_1 = new JRadioButton("Opcion 2");rdbtnOpcion_1.setBounds(43, 220, 109, 23);contentPane.add(rdbtnOpcion_1);rdbtnOpcion_2 = new JRadioButton("Opcion 3");rdbtnOpcion_2.setBounds(43, 246, 109, 23);contentPane.add(rdbtnOpcion_2);//Agrupamos los botnones de radioButtonGroup bgroup = new ButtonGroup();bgroup.add(rdbtnOpcion);bgroup.add(rdbtnOpcion_1);bgroup.add(rdbtnOpcion_2);//Menu de opcionescomboBox = new JComboBox<>();comboBox.setBounds(175, 70, 141, 22);contentPane.add(comboBox);//Añadimos opcionescomboBox.addItem("Fernando");comboBox.addItem("Alberto");comboBox.addItem("Arturo");//EventosbtnPulsame.addActionListener(new ActionListener(){public void actionPerformed (ActionEvent e){JOptionPane.showMessageDialog(contentPane, "¡Me has pulsado!");}});//En este caso hemos debido de converir el componente en un atributocomboBox.addActionListener(new ActionListener(){public void actionPerformed (ActionEvent e){textField_1.setText(comboBox.getItemAt(comboBox.getSelectedIndex()));}});textField.addKeyListener(new KeyListener(){public void keyTyped (KeyEvent e){//Si el caracter introducido es un digito...if (Character.isDigit(e.getKeyChar())){//... no lo escribee.consume();}}public void keyReleased(KeyEvent e){}public void keyPressed(KeyEvent e){}});btnAnadir.addActionListener(new ActionListener(){public void actionPerformed (ActionEvent e){comboBox.addItem(textField.getText());textField.setText("");JOptionPane.showMessageDialog(contentPane, "Nombre Añadido");}});rdbtnOpcion.addMouseListener(new MouseListener(){public void mouseClicked(MouseEvent e){}public void mouseEntered(MouseEvent e){lblEstasSobreLa.setText(lblEstasSobreLa.getText()+rdbtnOpcion.getText());}public void mouseExited(MouseEvent e){lblEstasSobreLa.setText("Estas sobre la ");}public void mousePressed(MouseEvent e){}public void mouseReleased(MouseEvent e){}});rdbtnOpcion_1.addMouseListener(new MouseListener(){public void mouseClicked(MouseEvent e){}public void mouseEntered(MouseEvent e){lblEstasSobreLa.setText(lblEstasSobreLa.getText()+rdbtnOpcion_1.getText());}public void mouseExited(MouseEvent e){lblEstasSobreLa.setText("Estas sobre la ");}public void mousePressed(MouseEvent e){}public void mouseReleased(MouseEvent e){}});rdbtnOpcion_2.addMouseListener(new MouseListener(){public void mouseClicked(MouseEvent e){}public void mouseEntered(MouseEvent e){lblEstasSobreLa.setText(lblEstasSobreLa.getText()+rdbtnOpcion_2.getText());}public void mouseExited(MouseEvent e){lblEstasSobreLa.setText("Estas sobre la ");}public void mousePressed(MouseEvent e){}public void mouseReleased(MouseEvent e){}});textField_2.addKeyListener(new KeyListener(){public void keyTyped (KeyEvent e){//Si el caracter introducido no es un digito...if (!Character.isDigit(e.getKeyChar())){//... no lo escribee.consume();}}public void keyReleased(KeyEvent e){}public void keyPressed(KeyEvent e){}});}}

Con NetBeans, semplicemente abbiamo fatto clic su un elemento (nella parte Design) e scegli tra il menu Eventi, l’evento che vogliamo programmare e sembrare separatamente nel codice.
Spero ti aiuti. Se hai dei dubbi, chiedi. Siamo qui per aiutarti.

Leave a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *