ตัวอย่างในบทความนี้สรุปวิธีการตอบสนองต่อเหตุการณ์ทั่วไปใน Java รวมถึงการตรวจสอบคลาสคอนเทนเนอร์ คลาส Listener AbstractAction การสะท้อน ฯลฯ สำหรับการอ้างอิงของคุณ วิธีการเฉพาะมีดังนี้:
ประการแรก ในส่วนติดต่อผู้ใช้แบบกราฟิก Java ขั้นตอนที่จำเป็นในการจัดการเหตุการณ์คือ :
1. สร้างส่วนประกอบ (ตัวควบคุม) ที่ยอมรับการตอบสนอง
2. ใช้อินเทอร์เฟซการฟังเหตุการณ์ที่เกี่ยวข้อง
3. ลงทะเบียน Action Listener ของแหล่งเหตุการณ์
4. การประมวลผลเหตุการณ์เมื่อมีการทริกเกอร์เหตุการณ์
ดังนั้น การตอบสนองต่อเหตุการณ์สามารถทำได้ในลักษณะรวมศูนย์ดังต่อไปนี้
1. การตรวจสอบคลาสคอนเทนเนอร์ <br/>ผลกระทบ: คลิกปุ่มสามปุ่มในแบบฟอร์มเพื่อให้ได้เวลาตอบสนองที่สอดคล้องกัน
import java.awt.*; import java.awt.event.*; import javax.swing.*; //เมื่อประกาศคลาส ให้เพิ่ม "implements ActionListener" เพื่อใช้อินเทอร์เฟซการฟัง จากนั้นแยกด้วยเครื่องหมายจุลภาค // ตัวอย่างเช่น "ใช้ ActionListener, KeyListener" คลาส ButtonListener ขยาย JFrame ใช้งาน ActionListener { JButton ตกลง ยกเลิก ออก; // สร้างส่วนประกอบที่ยอมรับการตอบสนอง ซึ่งเป็นปุ่มสาธารณะสามปุ่ม ButtonListener(ชื่อสตริง){ super(title); this.setLayout(new FlowLayout()); ok = new JButton("OK"); cancel = new JButton("Return"); ; // คำสั่งสามรายการต่อไปนี้ลงทะเบียนผู้ฟังสำหรับปุ่ม ok.addActionListener (สิ่งนี้); getContentPane().add(ok); getContentPane().add(cancel); getContentPane().add(exit); } // ดำเนินการประมวลผลเหตุการณ์ให้เสร็จสิ้นเมื่อเหตุการณ์ถูกทริกเกอร์ public void actionPerformed(ActionEvent e){ if(e. getSource ()==ok) System.out.println("ตกลง"); if(e.getSource()==cancel) System.out.println("Return"); if(e.getSource()==exit) System.exit(0); } สาธารณะคงเป็นโมฆะ main (String args []) { ButtonListener pd = new ButtonListener ("ActionEvent Demo"); pd.setVisible(จริง);
2. คลาสการตรวจสอบตระหนักถึง ผลกระทบ: คลิกปุ่มสามปุ่มในแบบฟอร์มเพื่อดูเวลาที่สอดคล้องกัน
import java.awt.*; import java.awt.event.*; import javax.swing.*; { super( title); this.setLayout(new FlowLayout()); ok = new JButton("OK"); ยกเลิก = new JButton("Return"); = new JButton("Exit"); ok.addActionListener(ใหม่ MyListener()); cancel.addActionListener(ใหม่ MyListener());; exit.addActionListener(ใหม่ MyListener());; getContentPane().add(cancel); getContentPane().add(exit); } สาธารณะคงเป็นโมฆะ main(String args[]) { ButtonListener pd=new ButtonListener("ActionEvent Demo"); pd.setSize(250,100); pd.setVisible(true); } } //ฟังคลาสเหตุการณ์การดำเนินการ MyListener ใช้งาน ActionListener{ public void actionPerformed(ActionEvent e){ if( e .getActionCommand()=="ตกลง") System.out.println("ตกลง"); if(e.getActionCommand()=="Return") System.out.println("Return"); ถ้า(e.getActionCommand()=="Exit") System.exit(0);
3. ใช้คลาส AbstractAction เพื่อดำเนินการตรวจสอบ
เอฟเฟกต์: คลิกเมนูเพื่อตอบกลับ
นำเข้า java.awt.BorderLayout; นำเข้า java.awt.event.ActionEvent; นำเข้า javax.swing.JMenu; ; นำเข้า javax.swing.JMenuItem; //คลาสนี้สืบทอด AbstractAction และต้องใช้เมธอด actionPerformed() class AbstractEvent ขยาย AbstractAction{ //private static สุดท้าย serialVersionUID = 1L; AbstractEvent(){ } public void actionPerformed(ActionEvent e){ //ป๊อปอัปกล่องโต้ตอบการยืนยัน if (e.getActionCommand()=="open"){ JOptionPane . showMessageDialog(null, "open"); }else if (e.getActionCommand()=="ปิด"){ JOptionPane.showMessageDialog(null, "ปิด"); }else if (e.getActionCommand()=="run"){ JOptionPane.showMessageDialog(null, "Run"); }else if (e.getActionCommand()==" หยุด"){ JOptionPane.showMessageDialog (null, "หยุด"); } } } คลาสสาธารณะ TestAbstractEvent { ส่วนตัวคงที่ แถบเมนู JMenuBar; เฟรม JFrame ส่วนตัวแบบคงที่ // ตัวจัดการเฉพาะสำหรับการระบุ MenuEvent เสร็จสมบูรณ์โดยคลาส AbstractEvent การดำเนินการขั้นสุดท้าย MenuEvent=new AbstractEvent(){ frame=new JFrame("menu"); frame.getContentPane().setLayout(new BorderLayout()); menubar=new JMenuBar() ("ไฟล์"); // สร้างอินสแตนซ์รายการเมนูและเพิ่มผู้ฟังสำหรับ openAction, JMenuItem menuItemopen=new JMenuItem("open"); menuItemopen.addActionListener(MenuItem menuItemclose=new JMenuItem("ปิด") "); JMenuItem menuItemrun=new JMenuItem("run"); menuItemrun.addActionListener(MenuItemrun); menuTool.add(menuItemstop); .เพิ่ม(เมนูไฟล์); menubar.add (menuTool); menubar.setVisible (จริง); frame.add (menubar, BorderLayout.NORTH); frame.setSize (400,200); frame.setVisible (จริง); { TestAbstractEvent();
4. AbstractAction class + วิธีการสะท้อน <br/>เอฟเฟกต์: คลิกปุ่มสามปุ่มบนแถบเครื่องมือ และผ่านชื่อของปุ่ม การสะท้อนจะได้รับการตอบกลับการใช้งานคลาสที่มีชื่อเดียวกันกับปุ่ม
import java.awt.BorderLayout; import java.awt.event.ActionEvent; นำเข้า javax.swing.*; ViewAction(){ } public ViewAction(String ActionName){ this.ActionName=ActionName; //this.frame=frame; } @แทนที่ สาธารณะเป็นโมฆะ actionPerformed(ActionEvent e) { การดำเนินการ action=getAction(this.ActionName); action.execute(); } การดำเนินการส่วนตัว getAction(String ActionName){ ลอง{ ถ้า (this.action==null){ การกระทำการกระทำ=(Action)Class .forName(ActionName).newInstance(); this.action=action; } return this.action; } catch(ข้อยกเว้น e){ return null; } } ขยาย JFrame { สาธารณะ JToolBar bar=new JToolBar(); String buttonName[]={"b1", "b2", "b3"}; public TestAE(){ super("Event"); i<buttonName.length;i++){ ViewAction action=new ViewAction(buttonName[i]); ปุ่ม JButton=ใหม่ JButton(buttonName[i]); button.addActionListener(การกระทำ); bar.add(ปุ่ม); } this.getContentPane().add(bar,BorderLayout.NORTH); this.setSize(300, 200); this.setLocationRelativeTo(null); จริง); } สาธารณะคงเป็นโมฆะหลัก (สตริง [] args) { ใหม่ TestAE (); } } การกระทำของอินเทอร์เฟซ ดำเนินการ (); } คลาส b1 ดำเนินการการกระทำ { โมฆะสาธารณะดำเนินการ () { JOptionPane.showMessageDialog (null, "b1 ถูกคลิก"); } } คลาส b2 ดำเนินการการกระทำ { โมฆะสาธารณะดำเนินการ () { JOptionPane.showMessageDialog (null, " b2 ถูกคลิก"); } } คลาส b3 ดำเนินการดำเนินการ { โมฆะสาธารณะดำเนินการ () { JOptionPane.showMessageDialog (null, "คลิกแล้ว" b3"); } }
ตัวอย่างข้างต้นอธิบายได้ดีและไม่ควรเข้าใจยาก ฉันหวังว่าตัวอย่างที่อธิบายไว้ในบทความนี้จะเป็นประโยชน์กับทุกคน