สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Tutorial JAVA

01 install Eclipse 02 intro to programming Eclipse 03 condition 04.loop 05.array 05 2 array cont 06 01 function 06 02 function cont 07 object 08 string 09 constructor 10 01 oop 10 02 oop2 11 exception 12 reading file 13 thread 14 generic 15 01 GUI 15 02 GUI2 15 03.GUI3 16 using WindowBuilder 17 event 18 database management system 19 ER diagram 20 Relational 21 Xampp 22 JDBC 23 MVC 24 SQL

การจัดการอีเวนท์ (Event Handling)

            หลังจากสามารถสร้าง GUI ให้ได้หน้าต่างแบบที่ต้องการเป็นที่เรียบร้อยก็จะพบว่าเมื่อรันโปรแกรมจะปรากฏหน้าจอ GUI ขึ้นมาก็จริงแต่ไม่สามารถตอบสนองได้ เช่น กดปุ่มก็ไม่เกิดอะไรขึ้น นั่นก็เป็นเพราะว่ายังไม่ได้มีการกำหนดหน้าที่ของคอมโพเนนท์ต่างๆใน GUI ซึ่งการจะกำหนดการกระทำต่างๆให้ GUI เรียกว่าการจัดการกับอีเวนท์ หรือ Event Handling

การจัดการกับอีเวนท์

            Event แปลว่าเหตุการณ์ ซึ่งหมายถึงเหตุการณ์ต่างๆที่เกิดขึ้นกับโปรแกรม เช่น เกิดเหตุการณ์คลิ๊กโดยเมาส์ การกดปุ่มที่แป้นพิมพ์ (เช่นปุ่ม Enter) แต่การสร้าง GUI เฉยๆไม่ได้กำหนดการรับมือกับเหตุการณ์ต่างๆหากอยากให้โปรแกรมใช้งานได้ก็ต้องรับมือกับอีเวนท์ด้วย ซึ่งก่อนอื่นควรทำความรู้จักกับอีวเนท์ประเภทต่างๆก่อน ซึ่งจะแนะนำจาก ประเภทอีเวนท์ว่าอีเวนท์นั้นๆใช้ทำอะไร โดยจะ new anonymous inner class ของอินเตอร์เฟซใดและใช้เมท็อดอะไร

1.ActionEvent

การใช้งาน : อีเวนท์นี้มีไว้สำหรับจัดการกับการคลิ๊ก JButton และ  การใช้ปุ่ม Enter การดับเบิลคลิ๊กและการเลือกใน MenuItem

อินเตอร์เฟซ : ActionListener

เมท็อด : actionPerformed(ActionEvent)

2.ComponentEvent

การใช้งาน : เป็นตัวบอกให้รู้ว่าใช้คอมโพเนนท์อะไรบ้าง

อินเตอร์เฟซ : ComponentListener

เมท็อด : componentMoved(ComponenEvent), componentHidden(ComponenEvent), componentShow(ComponenEvent)

3.ContainerEven

การใช้งาน :สำหรับการเพิ่มและลบคอนเทนเนอร์

อินเตอร์เฟซ : ContainerListener

เมท็อด : componentAdded(ContainerEvent), componentRemoved(ContainerEvent),

4.FocusEvent

การใช้งาน : เมื่อผู้ใช้เลื่อนอุปกรณ์อินพุตมาชี้ยังอ็อปเจ็คของส่วนประกอบกราฟฟิกใดๆ

อินเตอร์เฟซ : FocusListener

เมท็อด : focusGained(FocusEvent), focusLost(FocusEvent)

5.ItemEvent

การใช้งาน : เมื่อทำการเลือกรายการใน List หรือ Checkbox

อินเตอร์เฟซ : ItemListener

เมท็อด : itemStateChaned(ItemEvent)

6.KeyEvent

การใช้งาน : เมื่อการทำงานเกี่ยวข้องแป้นพิมพ์

อินเตอร์เฟซ : KeyListener

เมท็อด : keyPressed(KeyEvent), keyReleased(KeyEvent), keyTyped(KeyEvent),

7.MouseEvent

การใช้งาน : เมื่อต้องการใช้งาน คลิ๊ก(clicked) เคลื่อนที่(moved) ลากวาง(dragged) โดยใช้ได้กับ JButton JCheckboc, JScrollPane, JTextField เป็นต้น

อินเตอร์เฟซ : MouseListener

เมท็อด : mousePressed(MouseEvent) กดค้างไว้, mouseReleased(MouseEvent) ปล่อยเมาส์, mouseClicked(MouseEvent) คลิ๊กเมาส์

8.MouseMotionEvent

การใช้งาน : คล้ายกับ 7

อินเตอร์เฟซ : MouseMotionListener

เมท็อด : mouseDragged(MouseEvent), mouseMoved(MouseEvent),

การใช้งาน

            ขั้นแรกต้องรู้ก่อนว่าต้องการให้คอมโพเนนท์ใดทำงาน เช่น ง่ายๆและใช้บ่อยๆเลยก็คือปุ่ม(JButton) ก็ต้องนึกต่อไปอีกว่าจะให้ปุ่มทำงานอะไรได้ ก็เช่นคลิ๊กได้หรือกด Enter ก็ได้ด้วย

            ขั้นต่อมาก็ให้มาดูที่อีเวนต์ว่าว่ามีอีเวนต์ตัวไหนที่สามารถทำให้ปุ่มทำงานตามที่ต้องการได้บ้าง ให้เลือกให้เข้าคู่ถูกต้องกับการทำงาน

            ขั้นตอนการเรียกใช้อีเวนต์เป็นดังนี้

-          สร้างตัวแปรอ็อปเจ็คของคอมโพเนนท์(สร้างอยู่แล้วอัตโนมัติ ถ้าสร้างจาก WindowBuilder)

-          ให้อ็อปเจ็คนั้นเรียกเมท็อดที่ชื่อaddตามด้วยชื่อของอินเตอร์เฟส addxxxx(parameter) เช่น addActionListener

-          ภายในพารามิเตอร์ให้สร้าง anonymous inner class ของอินเตอร์เฟสและ อิมพลีเมนต์ เมท็อดของอินเตอร์เฟสให้ทำงานตามที่ต้องการ(จริงๆใช้งานได้หลายแบบแต่ที่นี้จะใช้แบบ anonymous inner classเพราะสามารถ generate ได้อัตโนมัติ)

แต่พูดไปแล้วอาจจะงงต้องลองดูตัวอย่างโครงสร้าง ซึ่งจะออกมาลักษณะนี้

ชื่อคลาสคอมโพเนนท์ ชื่อตัวแปรอ็อปเจ็ค = new ชื่อคลาสคอมโพเนนท์ ("text");

                        ชื่อตัวแปรอ็อปเจ็ค.addอินเตอร์เฟส(new ชื่ออินเตอร์เฟส() {

                                    public void ชื่อเมท็อด(พารามิเตอร์แบบอ็อปเจ็ค) {

                                               

                                                           

                                    }

                        });

                        ชื่อตัวแปรอ็อปเจ็ค.setBounds(x, y, width, height);

                        contentPane.add(ชื่อตัวแปรอ็อปเจ็ค);

x, y คือตำแหน่งตามแนวแกน x และ y , width, heightคือขนาดกว้างสูง

แต่การเขียนโค๊ตเหล่านี้ก็ไม่จำเป็นเพราะ WindowBuilder สามารถ generate ให้ได้อัตโนมัติอีกเช่นเดียวกัน แต่สิ่งควรรู้คือตำแหน่งสำหรับการ อิมพลีเมนท์เมท็อด

วิธีจัดการอีเวนต์ด้วย WindowBuilder

1.      เอาเมาส์ชี้ไปที่คอมโพเนนท์ที่ต้องการจัดการกับอีเวนต์ จากนั้นให้คลิ๊กขวา จะมีคำว่า Add event handler ให้เลือกอันนี้

 


รูป17-1

เมื่อเลือกที่ Add event handlerจะปรากฏให้เลือกมาต้องการทำอะไร ใช้เมท็อดอะไรดังรูป

 


รูป17-2

เมื่อเลือกให้ทำอะไรแล้วโค๊ตก็จะมาปรากฏในหน้า source

 


รูป17-3

ตัวอย่างการใช้งาน

จะสาธิตตัวอย่างการใช้งานอย่างง่ายที่สุดนั่นคือ จะเขียนโปรแกรมให้ผู้ใช้กรอกข้อความเข้ามา จากนั้นให้มี JDialog ทักทายตอบออกไป

เริ่มจากสร้าง GUI สำหรับช่องกรอกชื่อ และปุ่มสำหรับ Enter

 


รูป17-4

จัดการกับอีเวนต์ของปุ่ม Enter ด้วย ActionListener

 

 


รูป17-5

ทำการอิมพลีเมนท์เมท็อด actionPerformed  ด้วยการให้แสดง JDialog ออกมาเมื่อมีการคลิ๊กหรือ Enter ที่ปุ่มนี้ โดยให้แสดงข้อความ Hello แล้วตามด้วยชื่อที่ผู้ใช้ได้หรอกเข้ามาโดย getText() มาจากช่อง JTextField ที่สร้างไว้

 


รูป17-6

ผลลัพธ์ที่ได้ คือเมื่อกดปุ่มจะมี Dialog ขึ้นมา ถ้าไม่ทำการจัดการกับอีเวนต์เวลากดปุ่มก็จะไม่ได้เกิดอะไร

 


รูป 17-7



บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

C Article


C++ Article


Java Article


C#.NET Article


VB.NET Article


Python Article


Golang Article


JavaScript Article


Perl Article


Lua Article


Rust Article


Article


Python


Python Numpy


Python Machine Learning



แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา