Los ejemplos de este artículo resumen los métodos comunes de respuesta a eventos en Java, incluida la supervisión de clases de contenedor, clases de escucha, AbstractAction, reflexión, etc. Para su referencia. Los métodos específicos son los siguientes:
En primer lugar, en la interfaz gráfica de usuario de Java, los pasos necesarios para manejar eventos son :
1. Cree un componente (control) que acepte respuestas.
2. Implementar interfaces de escucha de eventos relevantes
3. Registre el detector de acciones de la fuente del evento.
4. Procesamiento de eventos cuando se activa el evento.
En consecuencia, la respuesta a incidentes se puede realizar de la siguiente manera centralizada.
1. Monitoreo de clase de contenedor <br/>Efecto: haga clic en tres botones en el formulario para lograr el tiempo de respuesta correspondiente.
import java.awt.*; import java.awt.event.*; import javax.swing.*; // Al declarar una clase, agregue "implementa ActionListener" para implementar la interfaz de escucha. luego separe con comas // Por ejemplo, la clase "implementa ActionListener,KeyListener" ButtonListener extiende JFrame implementa ActionListener{ JButton ok, cancel,exit //Crea un componente que acepte respuestas, que son tres botones public; ButtonListener(String title){ super(title); this.setLayout(new FlowLayout()); ok = new JButton("OK"); cancelar = new JButton("Return"); ; //Las siguientes tres declaraciones registran oyentes para los botones ok.addActionListener(this); cancel.addActionListener(this); getContentPane().add(ok); getContentPane().add(cancel); getContentPane().add(exit); //Procesamiento completo del evento cuando se activa el evento public void actionPerformed(ActionEvent e){ if(e. getSource ()==ok) System.out.println("OK"); if(e.getSource()==cancelar) System.out.println("Return"); if(e.getSource()==salir) System.exit(0);; } public static void main(String args[]) { ButtonListener pd=new ButtonListener("ActionEvent Demo"); pd.setVisible(verdadero); } }
2. La clase de monitoreo logra el efecto: haga clic en tres botones en el formulario para realizar el tiempo correspondiente.
import java.awt.*; import java.awt.event.*; import javax.swing.*; class ButtonListener1 extends JFrame { //No hay ninguna implementación de monitoreo de JButton, ok, cancelar, salir; { super( título); this.setLayout(new FlowLayout()); ok = nuevo JButton("OK"); nuevo JButton("Regresar"); = new JButton("Salir"); ok.addActionListener(new MyListener()); cancel.addActionListener(new MyListener());; exit.addActionListener(new MyListener());; getContentPane().add(cancelar); getContentPane().add(salir } public static void main(String args[]) { ButtonListener pd=new ButtonListener("ActionEvent Demo"); pd.setSize(250,100); pd.setVisible(true); e .getActionCommand()=="Aceptar") System.out.println("Aceptar"); if(e.getActionCommand()=="Regresar") System.out.println("Regresar"); if(e.getActionCommand()=="Salir") System.exit(0);;
3. Utilice la clase AbstractAction para implementar el monitoreo.
Efecto: haga clic en el menú para responder
importar java.awt.BorderLayout; importar javax.swing.JFrame; importar javax.swing.JMenu; importar javax.swing.JMenu; ; importar javax.swing.JMenuItem; importar javax.swing.JOptionPane; //Esta clase hereda AbstractAction y debe implementar el método actionPerformed(). class AbstractEvent extends AbstractAction{ //private static final long serialVersionUID = 1L; AbstractEvent(){ } public void actionPerformed(ActionEvent e){ //Cuadro de diálogo emergente de confirmación if (e.getActionCommand()=="open"){ JOptionPane showMessageDialog(null, "abrir"); }si no (e.getActionCommand()=="cerrar"){. JOptionPane.showMessageDialog(null, "Cerrar"); }else if (e.getActionCommand()=="ejecutar"){ JOptionPane.showMessageDialog(null, "Ejecutar"); detener"){ JOptionPane.showMessageDialog(nulo, "detener"); } } } clase pública TestAbstractEvent { estático privado Barra de menú JMenuBar; marco JFrame estático privado; // El controlador específico para especificar MenuEvent lo completa la clase AbstractEvent. Acción final MenuEvent=new AbstractEvent(); public TestAbstractEvent(){ frame=new JFrame("menu"); frame.getContentPane().setLayout(new BorderLayout()); ("file"); //Crea una instancia de un elemento de menú y agrega un detector para openAction, JMenuItem menuItemopen=new JMenuItem("abrir"); menuItemopen.addActionListener(MenuEvent); menuFile.add(menuItemopen); "); JMenuItem menuItemrun=new JMenuItem("ejecutar"); menuItemrun.addActionListener(MenuEvent); JMenuItem menuItemstop=new JMenuItem("detener"); .add(menúArchivo); menubar.add(menuTool); menubar.setVisible(true); frame.add(menubar,BorderLayout.NORTH); frame.setSize(400,200); frame.setVisible(verdadero); public static void main(String[] args) { nuevo TestAbstractEvent();
4. Clase AbstractAction + método de reflexión <br/>Efecto: haga clic en tres botones en la barra de herramientas y, a través del nombre del botón, la reflexión obtendrá una respuesta de implementación de clase con el mismo nombre que el botón.
importar java.awt.BorderLayout; importar java.awt.event.ActionEvent; importar javax.swing.*; clase ViewAction extiende AbstractAction {private String ActionName=""; //private JFrame frame=null; ViewAction(){ } public ViewAction(String ActionName){ this.ActionName=ActionName; //this.frame=frame } @Override public void; actionPerformed(ActionEvent e) { Acción acción=getAction(this.ActionName); action.execute(); } Acción privada getAction(String ActionName){ try{ if (this.action==null){ Acción acción=(Acción)Clase .forName(ActionName).newInstance(); this.action=action } return this.action; }catch(Exception e){ return null; extiende JFrame {barra pública JToolBar=new JToolBar(); String nameName[]={"b1","b2","b3"}; public TestAE(){ super("Evento"); i<buttonName.length;i++){ ViewAction action=new ViewAction(buttonName[i]); JButton button=new JButton(buttonName[i]); button.addActionListener(acción); bar.add(botón); } this.getContentPane().add(bar,BorderLayout.NORTH); this.setSize(300, 200); verdadero); ejecutar(); } clase b1 implementa Acción{ public void ejecutar(){ JOptionPane.showMessageDialog(null, "se hizo clic en b1"); se hizo clic"); } } clase b3 implementa Acción{ public void ejecutar(){ JOptionPane.showMessageDialog(null, "Se hizo clic b3"); } }
Los ejemplos anteriores están bien explicados y no deberían ser difíciles de entender. Espero que los ejemplos descritos en este artículo sean útiles para todos.