Les exemples de cet article résument les méthodes courantes de réponse aux événements en Java, notamment la surveillance des classes de conteneurs, les classes d'écoute, AbstractAction, la réflexion, etc. Pour votre référence. Les méthodes spécifiques sont les suivantes :
Tout d'abord, dans l'interface graphique Java, les étapes nécessaires à la gestion des événements sont :
1. Créez un composant (contrôle) qui accepte les réponses
2. Implémenter des interfaces d'écoute d'événements pertinentes
3. Enregistrez l'écouteur d'action de la source d'événement
4. Traitement de l'événement lorsque l'événement est déclenché
En conséquence, une réponse à un incident peut être effectuée de la manière centralisée suivante.
1. Surveillance des classes de conteneurs <br/>Effet : Cliquez sur trois boutons dans le formulaire pour obtenir le temps de réponse correspondant.
import java.awt.*; import java.awt.event.*; import javax.swing.*; //Lors de la déclaration d'une classe, ajoutez "implements ActionListener" pour implémenter l'interface d'écoute. puis Séparez par des virgules // Par exemple, la classe "implémente ActionListener,KeyListener" ButtonListener extends JFrame Implements ActionListener{ JButton ok, Cancel,exit //Créez un composant qui accepte les réponses, soit trois boutons publics. ButtonListener(String title){ super(title); this.setLayout(new FlowLayout()); ok = new JButton("OK"); annuler = new JButton("Return"); ; //Les trois instructions suivantes enregistrent les écouteurs pour les boutons ok.addActionListener(this); getContentPane().add(ok); getContentPane().add(cancel); getContentPane().add(exit); } //Traitement complet de l'événement lorsque l'événement est déclenché public void actionPerformed(ActionEvent e){ if(e. getSource ()==ok) System.out.println("OK"); if(e.getSource()==annuler) System.out.println("Retour"); if(e.getSource()==exit) System.exit(0);; } public static void main(String args[]) { ButtonListener pd=new ButtonListener("ActionEvent Demo"); pd.setVisible(true); } }
2. La classe de surveillance réalise l'effet : cliquez sur trois boutons dans le formulaire pour réaliser l'heure correspondante.
import java.awt.*; import java.awt.event.*; import javax.swing.*; class ButtonListener1 extends JFrame { //Il n'y a pas d'implémentation de surveillance de JButton ici ok, annuler, quitter public ButtonListener1 (titre de la chaîne) { super( titre); this.setLayout(new FlowLayout()); ok = new JButton("OK"); annuler = new JButton("Retour"); = new JButton("Exit"); ok.addActionListener(new MyListener()); Cancel.addActionListener(new MyListener());; exit.addActionListener(new MyListener());; getContentPane().add(cancel); getContentPane().add(exit); public static void main(String args[]) { ButtonListener pd=new ButtonListener("ActionEvent Demo"); pd.setSize(250,100); pd.setVisible(true); } } //Écouter la classe d'événements d'action MyListener implémente ActionListener{ public void actionPerformed(ActionEvent e){ if( e .getActionCommand()=="OK") System.out.println("OK"); if(e.getActionCommand()=="Return") System.out.println("Return"); if(e.getActionCommand()=="Exit") System.exit(0);;
3. Utilisez la classe AbstractAction pour implémenter la surveillance
Effet : Cliquez sur le menu pour répondre
importer java.awt.BorderLayout; importer java.awt.event.ActionEvent; importer javax.swing.AbstractAction; importer javax.swing.JFrame; ; importer javax.swing.JMenuItem; importer javax.swing.JOptionPane; //Cette classe hérite de AbstractAction et doit implémenter la méthode actionPerformed(). class AbstractEvent extends AbstractAction{ //private static final long serialVersionUID = 1L; AbstractEvent(){ } public void actionPerformed(ActionEvent e){ //Boîte de dialogue de confirmation contextuelle if (e.getActionCommand()=="open"){ JOptionPane . showMessageDialog(null, "open"); }else if (e.getActionCommand()=="close"){ JOptionPane.showMessageDialog(null, "Fermer"); }else if (e.getActionCommand()=="run"){ JOptionPane.showMessageDialog(null, "Exécuter"); }else if (e.getActionCommand()==" stop"){ JOptionPane.showMessageDialog(null, "stop"); } } } classe publique TestAbstractEvent { statique privée Barre de menus JMenuBar ; cadre JFrame statique privé ; //Le gestionnaire spécifique pour spécifier MenuEvent est complété par la classe AbstractEvent. action finale MenuEvent=new AbstractEvent(); public TestAbstractEvent(){ frame=new JFrame("menu"); frame.getContentPane().setLayout(new BorderLayout()); ("file"); //Instancier un élément de menu et ajouter un écouteur pour openAction, JMenuItem menuItemopen=new JMenuItem("ouvrir"); menuItemopen.addActionListener(MenuEvent); JMenuItem menuItemclose=new JMenuItem("fermer"); menuItemclose.addActionListener(MenuEvent); "); JMenuItem menuItemrun=new JMenuItem("run"); menuItemrun.addActionListener(MenuItem menuItemstop=new JMenuItem("stop"); menuItemrun.addActionListener(MenuEvent); .add(menuFichier); menubar.add(menuTool); menubar.setVisible(true); frame.add(menubar,BorderLayout.NORTH); frame.setSize(400,200); frame.setVisible(true); { nouveau TestAbstractEvent(); } }
4. Classe AbstractAction + méthode de réflexion <br/>Effet : cliquez sur trois boutons dans la barre d'outils, et via le nom du bouton, la réflexion obtiendra une réponse d'implémentation de classe avec le même nom que le bouton.
importer java.awt.BorderLayout ; importer java.awt.event.ActionEvent ; importer javax.swing.* ; classe ViewAction extends AbstractAction{ private String ActionName="" ; //private JFrame frame=null private Action public ; ViewAction(){ } public ViewAction(String ActionName){ this.ActionName=ActionName //this.frame=frame } @Override public void; actionPerformed(ActionEvent e) { Action action=getAction(this.ActionName); action.execute(); } private Action getAction(String ActionName){ try{ if (this.action==null){ Action action=(Action)Class .forName(ActionName).newInstance(); this.action=action; } return this.action }catch(Exception e){ return null } } } classe publique TestAE; extends JFrame { public JToolBar bar=new JToolBar(); String boutonName[]={"b1", "b2", "b3"}; public TestAE(){ super("Event"); i<buttonName.length;i++){ ViewAction action=new ViewAction(buttonName[i]); bouton.addActionListener(action); bar.add(bouton); } this.getContentPane().add(bar,BorderLayout.NORTH); this.setSize(300, 200); true); } public static void main(String [] args){ new TestAE( } } interface Action{ void); exécuter(); } la classe b1 implémente l'action{ public void exécuté(){ JOptionPane.showMessageDialog(null, "b1 a été cliqué"); } } la classe b2 implémente l'action{ public void exécuter(){ JOptionPane.showMessageDialog(null, " b2 a été cliqué"); } } la classe b3 implémente Action{ public void perform(){ JOptionPane.showMessageDialog(null, "Clicked b3"); } }
Les exemples ci-dessus sont bien expliqués et ne devraient pas être difficiles à comprendre. J'espère que les exemples décrits dans cet article seront utiles à tout le monde.