تلخص الأمثلة الواردة في هذه المقالة أساليب الاستجابة للأحداث الشائعة في Java، بما في ذلك مراقبة فئة الحاوية، وفئات المستمع، وAbstractAction، والانعكاس، وما إلى ذلك. للرجوع اليها. الطرق المحددة هي كما يلي:
أولًا، في واجهة المستخدم الرسومية لـ Java، الخطوات اللازمة للتعامل مع الأحداث هي :
1. قم بإنشاء مكون (تحكم) يقبل الاستجابات
2. تنفيذ واجهات الاستماع للأحداث ذات الصلة
3. سجل مستمع الإجراء لمصدر الحدث
4. معالجة الحدث عند تشغيل الحدث
وبناء على ذلك، يمكن الاستجابة للحوادث بالطريقة المركزية التالية.
1. مراقبة فئة الحاوية <br/> التأثير: انقر فوق ثلاثة أزرار في النموذج لتحقيق وقت الاستجابة المقابل.
import java.awt.*; import java.awt.event.*; import javax.swing.*; // عند الإعلان عن فئة، أضف "تطبيق ActionListener" لتنفيذ واجهة الاستماع. ثم افصل بفواصل // على سبيل المثال، فئة "implements ActionListener,KeyListener" Extends JFrame Implements ActionListener{ JButton ok, Cancel,exit; // أنشئ مكونًا يقبل الاستجابات، وهو عبارة عن ثلاثة أزرار public ButtonListener(String title){ super(title); this.setLayout(new FlowLayout()); // العبارات الثلاثة التالية تسجل المستمعين للأزرار ok.addActionListener(this); Cancel.addActionListener(this); getContentPane().add(ok); getContentPane().add(cancel); getContentPane().add(exit); } // معالجة الحدث بالكامل عند تشغيل الحدث public void actionPerformed(ActionEvent e){ if(e. getSource ()==ok) System.out.println("OK"); if(e.getSource()==cancel) System.out.println("Return"); if(e.getSource()==exit) System.exit(0);; } public static void main(String args[]) { ButtonListener pd=new ButtonListener("ActionEvent Demo"); pd.setVisible(true) } };
2. تدرك فئة المراقبة التأثير: انقر فوق ثلاثة أزرار في النموذج لتحقيق الوقت المقابل.
import java.awt.*; import java.awt.event.*; import javax.swing.*; class ButtonListener1 Extends JFrame { // لا يوجد تنفيذ لمراقبة JButton هنا، إلغاء، خروج public ButtonListener1(String title) { super( title); this.setLayout(new FlowLayout()); ok = new JButton("OK"); Cancel = new JButton("Return"); = new JButton("Exit"); ok.addActionListener(new MyListener()); Cancel.addActionListener(new MyListener());; getContentPane().add(cancel); getContentPane().add(exit } public static void main(String args[]) { ButtonListener pd=new ButtonListener("ActionEvent Demo"); e .getActionCommand()=="OK") System.out.println("OK"); if(e.getActionCommand()=="Return") System.out.println("Return");
3. استخدم فئة AbstractAction لتنفيذ المراقبة
التأثير: انقر على القائمة للرد
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import javax.swing.JMenu; import javax.swing.JMenuBar import javax.swing.JMenuItem; import javax.swing.JOptionPane; // ترث هذه الفئة AbstractAction ويجب أن تنفذ طريقة actionPerformed (). class AbstractEventتمدد AbstractAction{ // خاص ثابت نهائي طويل serialVersionUID = 1L; AbstractEvent(){ } public void actionPerformed(ActionEvent e){ // مربع حوار التأكيد المنبثق if (e.getActionCommand()=="open"){ JOptionPane showMessageDialog(null, "open"); JOptionPane.showMessageDialog(null, "Close"); stop"){ JOptionPane.showMessageDialog(null, "stop"); } } } public class TestAbstractEvent { خاص ثابت JMenuBar Menubar; إطار JFrame ثابت خاص; // يتم إكمال المعالج المحدد لتحديد MenuEvent بواسطة فئة AbstractEvent. Final Action MenuEvent=new AbstractEvent(); public TestAbstractEvent(){frame=new JFrame("menu");frame.getContentPane().setLayout(new BorderLayout()); ("ملف")؛ // إنشاء عنصر قائمة وإضافة مستمع لـ openAction، JMenuItem MenuItemopen=new JMenuItem("open"); MenuItemopen.addActionListener(MenuEvent); MenuItemClose=new JMenuItem("إغلاق"); "); JMenuItem MenuItemrun=new JMenuItem("run"); MenuItemrun.addActionListener(MenuEvent); MenuItemstop=new JMenuItem("stop"); MenuTool.add(menuItemrun); .add(menuFile); Menubar.add(menuTool);menubar.setVisible(true);frame.add(menubar,BorderLayout.NORTH); { جديد TestAbstractEvent(); } }
4. فئة AbstractAction + طريقة الانعكاس <br/> التأثير: انقر فوق ثلاثة أزرار على شريط الأدوات، ومن خلال اسم الزر، سيحصل الانعكاس على استجابة تنفيذ فئة بنفس اسم الزر.
import java.awt.BorderLayout; import java.awt.event.ActionEvent; import javax.swing.*; class ViewAction Extends AbstractAction{ Private String ActionName = ""; // إطار JFrame الخاص = null; ViewAction(){ } public ViewAction(String ActionName){ this.ActionName=ActionName; //this.frame=frame; } @Override public void actionPerformed(ActionEvent e) { Action action=getAction(this.ActionName); action.execute() } public 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; Extends JFrame { public JToolBar bar=new JToolBar(); String ButtonName[]={"b1"،"b2"، "b3"}؛ public TestAE(){ super("Event"); i<buttonName.length;i++){ ViewAction action=new ViewAction(buttonName[i]); JButton Button=new JButton(buttonName[i]); Button.addActionListener(action); bar.add(button); } this.getContentPane().add(bar,BorderLayout.NORTH); this.setSize(300, 200); true); } public static void main(String [] args){ new TestAE(); } }interface Action{ void Execute(); تم النقر عليه"); } } فئة b3 تنفذ الإجراء { public void Execute(){ JOptionPane.showMessageDialog(null, "تم النقر عليه ب3"); } }
تم شرح الأمثلة المذكورة أعلاه جيدًا ولا ينبغي أن يكون من الصعب فهمها. آمل أن تكون الأمثلة الموضحة في هذه المقالة مفيدة للجميع.