Eventos e oíntes en Java

Hola a todos, hoxe vou explicar como usar eventos e oíntes en Java, isto é moi importante nas aplicacións gráficas.

Os eventos son as accións que o usuario pode realizar, ao realizar un evento ocorre unha serie de accións. Por exemplo, se o usuario presiona un botón chamado “Exit” para pechar a aplicación. Outro exemplo moi usado é validar o texto que introducimos nun campo de texto.

oíntes (oíntes ou oíntes en castelán). son responsables de controlar os eventos, agardan que o evento produza e realice unha serie de accións. Segundo o evento, necesitaremos un oínte que o controle.

Cada oínte ten unha serie de métodos que debe ser implementado. Aínda que só queremos usar un deles.

As liñas que usamos estarán no paquete java.AWT.EVENT.

Vexamos os diferentes oíntes que existen , a definición dos seus métodos e eventos que controlan:

Nome de oínte Descrición Métodos eventos
actionlistener ocorre cando fai clic nun compoñente tamén Se preme Intro co foco no compoñente.

Void público ActionPerformed (ActionEvent e)

  • jbutton: Prema ou prema Intro co foco activado nel.
  • jlist: fai dobre clic sobre un elemento da lista.
  • jmenuitem: Seleccione unha opción de menú.
  • jtextfield: Cando preme Intro co foco activado.
keylistener Ocorre cando preme unha tecla. Dependendo do método, cambiará a forma de premer a tecla.

Bloqueo público (keyevent e)
Void público Keypressed (keyevent e)
Void público Keyreleado (keyevent e)

Cando presionamos unha tecla, de acordo co oínte:

  • Keytyped: ao premer e soltar a tecla.
  • keypressed: ao premer a tecla.
  • keyreleges: cando solta a chave.
FOCUSLISTENER ocorre cando un compoñente gaña ou perde o foco, é dicir, está seleccionado.

baleiro público enfoque (focusEvent e)
Focus do baleiro público (focusevent e)

recibir ou perder o foco.
Mouselistener ocorre cando realizamos unha acción co rato.

Void público mouseclicked (Mouseevent e)

Void público MouseentErrod (Mouseevent e)

Void público Mouseexited (Mouseevent e)

Void público (MouseEvent e)

Void público mouseresesed (MouseEevent e)

Segundo o oínte:

  • Mousecliked: prema e solta.
  • Mousentered: Introduza un compoñente co punteiro.
  • Mousarexited: saia dun compoñente co punteiro
  • Mousepressed: prema o botón.
  • mousereled: solte o botón.
mousemotionlistener it produce co movemento do rato.

Void público Mousdedragged (Mouseevent e)
Void público Mousmoved (Mouseevent e)

segundo o oínte :

  • Mousdedragged: faga clic e arrastre un compoñente.
  • MouseMoved: ao mover o punteiro sobre un

Estes son os máis comúns, outros eventos que os veremos máis profundidade postes posteriores

Para engadir un evento, seguiremos a seguinte sintaxe:

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

Outro formulario é:

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

Por exemplo:

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

do segundo xeito sería así:

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

É posible que algún outro compoñente poida que sexa un atributo.

Deixo un exemplo completo con diferentes tipos de eventos:

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, simplemente facemos clic nun elemento (na parte de deseño) e escolle no menú Eventos, o evento que queremos programar e parecer por separado no código.
Espero que te axude. Se tes dúbidas, pregunta. Estamos aquí para axudarche.

Leave a Comment

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *