غالبًا ما يرتبط مصدر حدث الماوس بالحاوية. توفر لغة Java واجهتين للتعامل مع أحداث الماوس: واجهة Mouselistener و MousemotionListener.
واجهة mouselistener
يمكن لواجهة Mouselistener التعامل مع 5 أنواع من أحداث الماوس: اضغط على الماوس ، والحفر الماوس ، وانقر فوق الماوس ، وأدخل الماوس ، والخروج من الماوس. الطرق المقابلة هي:
(1) getx (): إحداثيات X من الماوس
(2) gety (): إحداثي y من الماوس
(3) getModifiers (): احصل على الزر الأيسر أو الأيمن من الماوس.
(4) getClickCount (): عدد المرات التي يتم فيها النقر فوق الماوس.
(5) GetSource (): احصل على مصدر الحدث الذي حدث فيه الماوس.
(6) addmouselistener: أضف الشاشة.
(7) عمليات الإزالة: إزالة الشاشة.
طرق تنفيذ واجهة mouselistener هي:
(1) mousepracted (mouseevent e) ؛
(2) MousereleSeped (mouseevent e) ؛
(3) mouseentered (mouseevent e) ؛
(4) mouseexited (mouseevent e) ؛
(5) mouseclicked (mouseevent e) ؛
[مثال] يقوم Applet بإعداد منطقة نص لتسجيل سلسلة من أحداث الماوس. عندما يدخل الماوس إلى نافذة التطبيق ، تعرض منطقة النص "الماوس" ؛ ، عندما يتم الضغط على الماوس ، عند النقر نقرًا مزدوجًا ، يتم عرض منطقة النص "انقر نقرًا مزدوجًا على الماوس" ؛ يعرض البرنامج أيضًا دائرة حمراء ، وعندما يتم النقر فوق الماوس ، سيستمر نصف قطر الدائرة في النمو بشكل أكبر.
استيراد java.applet.*؛ استيراد javax.swing.*؛ استيراد java.awt.*؛ import java.awt.event.*؛ class mypanel يمتد jpanel {public void print (int r) {graphics g = getGraphics () ؛ G.ClearRect (0،0 ، this.getwidth () ، this.getheight () TS Mouselistener {Jtextarea text ؛ افتح "،" انقر نقرًا مزدوجًا على الماوس "} ؛ mywindow (سلسلة S) {super (s) ؛ حاوية con = this.getContentPane () ؛ consetLayout (GridLayout جديد (2،1)) ؛ this.setsize ( 200،300) addmo uselistener (هذا) ؛ mousestates [mouseflg] ، الموقف هو: "+x+" ، "+y+"/n ") ؛ = e.gety () ؛ Voi d mouseenced (mouseevent e) {x = e.getx () ؛ = E.Gety () ؛ ) ؛
يمكن أن تحدث أحداث الماوس على أي مكون: إدخال الماوس ، مخرج الماوس ، مطبعة الماوس ، إلخ. على سبيل المثال ، أضف زرًا إلى البرنامج أعلاه وأضف شاشة الماوس إلى كائن الزر ، وقم بتعديل طريقة init () في البرنامج أعلاه إلى النموذج التالي ، أي أنه يمكن أن يشير إلى جميع أحداث الماوس على الزر.
button jbutton ؛ public void init () زر.
إذا أراد البرنامج أن يعرف أيضًا أن زر الماوس الأيسر أو الأيمن يتم الضغط عليه أو النقر عليه ، فيمكن تحديد زر الماوس الأيسر أو الأيمن من الماوس بواسطة Constants Button1_mask و button3_mask في فئة inputevent. على سبيل المثال ، يحدد التعبير التالي ما إذا كان زر الماوس الأيمن قد تم الضغط عليه أو النقر بزر الماوس الأيمن:
E.GetModiers () == inputevent
واجهة MousemotionListener
تعالج واجهة MousemotionListener حدثين: سحب الماوس ونقل الماوس.
طريقة تسجيل الشاشة هي:
AddMouseMotionListener (شاشة)
هناك طريقتان للواجهة للتنفيذ:
(1) mousedragged (mouseevent e)
(2) MouseMoved (Mouseevent E)
[مثال] تطبيق يتغير في أشرطة التمرير بشكل متزامن مع نافذة العرض. هناك مربع في النافذة. حاجِز. على العكس من ذلك ، إذا تم نقل شريط تمرير شريط التمرير ، فسيتغير موضع عرض المربع في النافذة.
استيراد javax.swing.*؛ استيراد java.awt. ConsetLayout (New BorderLayout () ؛ ) ، BorderLayout. أبعاد New (500،300) ؛ int) ((float) x/(float) getSize (). *100.0 ؛ ) . الماوس exited (mouseevent e) {} public void mouseclicked (mouseevent e) {} public void mouserelease (mouseevent e) {} public void mouseMoved (mouseevent e) {} public void mo uSepressed (mouseevent e) {x = ) y) ؛ .width); else if(e. getSource()==yScrollBar) y = (int)((float)(yScrollBar.getValue()/100.0)*getSize().height); repaint(); }}public class example_9 {public static void main () {mywindow mywindow = new mywindow ("برنامج Scrollbar Sclesatic") ؛
في المثال أعلاه ، إذا كنت بحاجة فقط إلى تغيير موضع عرض المحتوى عن طريق تحريك التمرير ، يمكنك ببساطة استخدام لوحة التمرير JScrollPane. إذا كان الأمر كذلك ، يمكن تجنب كل من إنشاء شريط التمرير والتحكم وتنفيذه مباشرة بواسطة JScrollPane. انظر التعريف المعدل التالي لـ MyWindow:
Class MyWindow يمتد Jframe {public mywindow (Super (s) ؛ ؛ () {Return New Dimension (400،400) ؛
يمكن أيضًا التحكم في شكل مؤشر الماوس بواسطة البرنامج ، ويمكن لطريقة setCursor () ضبط شكل مؤشر الماوس. على سبيل المثال ، الكود setCursor (cursor.getPredefinedCursor (cursor.wait_cursor)).