แหล่งที่มาของเหตุการณ์ของเหตุการณ์เมาส์มักจะเกี่ยวข้องกับคอนเทนเนอร์ ภาษา Java มีสองอินเทอร์เฟซสำหรับการจัดการเหตุการณ์เมาส์: Mouselistener และ MouseMotionListener Interface
อินเทอร์เฟซ Mouselistener
อินเทอร์เฟซ Mouselistener สามารถจัดการเหตุการณ์เมาส์ 5 ประเภท: กดเมาส์ปล่อยเมาส์คลิกเมาส์เข้าเมาส์และออกจากเมาส์ วิธีการที่สอดคล้องกันคือ:
(1) getx (): พิกัด x ของเมาส์
(2) Gety (): พิกัด y ของเมาส์
(3) getModifiers (): รับปุ่มซ้ายหรือขวาของเมาส์
(4) GetClickCount (): จำนวนครั้งที่เมาส์ถูกคลิก
(5) GetSource (): รับที่มาของเหตุการณ์ที่เมาส์เกิดขึ้น
(6) addmouselistener: เพิ่มจอภาพ
(7) RemoveMouselistener: ถอดจอภาพออก
วิธีการใช้อินเทอร์เฟซ Mouselistener คือ:
(1) Mousepressed (MouseEvent E);
(2) Mouseerleased (MouseEvent E);
(3) Mouseentered (MouseEvent E);
(4) MouseExited (MouseEvent E);
(5) Mouseclicked (MouseEvent E);
[ตัวอย่าง] แอปเพล็ตตั้งค่าพื้นที่ข้อความเพื่อบันทึกชุดเหตุการณ์เมาส์ เมื่อเมาส์เข้าสู่หน้าต่างแอปเพล็กพื้นที่ข้อความจะแสดง "เมาส์เข้ามา"; เมื่อกดเมาส์เมื่อดับเบิลคลิกพื้นที่ข้อความจะแสดง "ดับเบิลคลิกที่เมาส์" และพิกัดของเมาส์จะปรากฏขึ้น โปรแกรมยังแสดงวงกลมสีแดงและเมื่อคลิกเมาส์รัศมีของวงกลมจะยังคงเติบโตมากขึ้น
นำเข้า java.applet.*; นำเข้า Javax.swing.*; นำเข้า Java.awt.*; นำเข้า Java.awt.event.*; Class MyPanel ขยาย JPanel {Public Void Print (int R) {กราฟิก g = getGraphics (); G.ClearRect (0,0, this.getWidth (), this.getheight ()); TS Mouselistener {jtextarea text; เปิด "," ดับเบิลคลิกที่เมาส์ "}; myWindow (สตริง s) {super (s); container con = this.getContentPane (); con.setLayout (ใหม่ gridlayout (2,1)); this.setsize ( 200,300); addmo uselistener (นี้); Mousestates [Mouseflg]+", ตำแหน่งคือ:"+x+","+y+"/n"); = e.gety (); Voi D Mouseentered (MouseEvent E) {x = e.getx (); = e.gety (); ); Mousef LG = 4;
เหตุการณ์เมาส์สามารถเกิดขึ้นได้กับส่วนประกอบใด ๆ : รายการเมาส์, ทางออกเมาส์, การกดเมาส์ ฯลฯ ตัวอย่างเช่นเพิ่มปุ่มลงในโปรแกรมด้านบนและเพิ่มการตรวจสอบเมาส์ลงในวัตถุปุ่มแก้ไขวิธีการ init () ในโปรแกรมด้านบนเป็นแบบฟอร์มต่อไปนี้นั่นคือสามารถระบุเหตุการณ์เมาส์ทั้งหมดบนปุ่ม
ปุ่ม Jbutton; Void Public INIT () {Button = New JButton ("เหตุการณ์ของเมาส์สามารถเกิดขึ้นได้บนปุ่ม") R = 10; ปุ่ม
หากโปรแกรมต้องการทราบเพิ่มเติมว่าปุ่มเมาส์ซ้ายหรือขวาถูกกดหรือคลิกปุ่มเมาส์ซ้ายหรือขวาของเมาส์สามารถกำหนดได้โดยค่าคงที่ button1_mask และ button3_mask ในคลาส inputevent ตัวอย่างเช่นนิพจน์ต่อไปนี้กำหนดว่าปุ่มเมาส์ขวาถูกกดหรือคลิกขวา:
E.GetModifiers () == InputEvent
อินเทอร์เฟซ MousemotionListener
อินเทอร์เฟซ MousemotionListener จัดการสองเหตุการณ์: ลากเมาส์และเคลื่อนย้ายเมาส์
วิธีการลงทะเบียนจอภาพคือ:
addmousemotionListener (มอนิเตอร์)
มีสองวิธีอินเตอร์เฟสที่จะนำไปใช้:
(1) Mousedragged (MouseEvent E)
(2) Mousemoved (MouseEvent E)
[ตัวอย่าง] แอปพลิเคชันที่เปลี่ยนแปลงในแถบเลื่อนแบบซิงโครนัสกับหน้าต่างแสดงผล มีสี่เหลี่ยมจัตุรัสในหน้าต่าง บาร์. ในทางตรงกันข้ามถ้าตัวเลื่อนของแถบเลื่อนถูกเลื่อนตำแหน่งการแสดงผลของสี่เหลี่ยมจัตุรัสในหน้าต่างก็จะเปลี่ยนไปเช่นกัน
นำเข้า Javax.swing.*; นำเข้า Java.awt.*; นำเข้า Java.awt.event.*; คลาส MyWindow ขยาย JFrame {สาธารณะ myWindow (สตริง s) {super (s); con .setLayout (New BorderLayout ()); ); Mylistener Listener = New MyListener (Xaxis, Yaxis, 238,118); , Borderlayout มิติใหม่ (500,300); int) ((ลอยตัว) x/(ลอย) getsize (). ความกว้าง)*100.0); *100.0); ); .Fillrect (0,0, size.width, size.height); เมาส์ eexited (MouseEvent E) {} โมฆะสาธารณะ mouseclicked (MouseEvent E) {} โมฆะสาธารณะ mouserelease (MouseEvent E) {} โมฆะสาธารณะ mousemoved (MouseEvent E) {} โมฆะสาธารณะ ); y); repaint ();} โมฆะสาธารณะปรับตัว .width); Example6_9 {โมฆะสาธารณะคงที่ main () {mywindow mywindow = new mywindow ("โปรแกรมแผนผัง Scrollbar");}}}
ในตัวอย่างข้างต้นหากคุณเพียงแค่ต้องการเปลี่ยนตำแหน่งการแสดงผลของเนื้อหาโดยเลื่อนตัวเลื่อนคุณสามารถใช้ JSCrollpane แผงเลื่อนได้ ถ้าเป็นเช่นนั้นการสร้างและควบคุมแถบเลื่อนสามารถหลีกเลี่ยงได้และถูกนำไปใช้โดยตรงภายในโดย JScrollpane ดูคำจำกัดความที่แก้ไขต่อไปนี้ของ MyWindow:
MyWindow ขยาย JFrame {Public MyWindow (String S) {Super (S); ผู้ฟัง SetPremerredsize (มิติใหม่ (700,700); () {ส่งคืนมิติใหม่ (400,400);}}
รูปร่างตัวชี้เมาส์สามารถควบคุมได้โดยโปรแกรมและวิธีการ setCursor () สามารถตั้งค่ารูปร่างตัวชี้เมาส์ ตัวอย่างเช่นรหัส SetCursor (Cursor.getPredefinedCursor (Cursor.Wait_Cursor))