Java Swing - الإنترفيس MouseListener And MouseMotionListener

  الإنترفيس MouseListener

يستخدم هذا الإنترفيس للتنبه عندما يقوم المستخدم بالنقر على أزرار الفأرة.

الإنترفيس MouseListener يحتوي على خمس دوال يجب أن تفعل لها Override عند إنشاء كائن منه:

  • الدالة mouseClicked(MouseEvent e): يتم إستدعاءها بعد أن يقوم المستخدم بالنقر على أي زر موجود في الفأرة.

  • الدالة mousePressed(MouseEvent e): يتم إستدعاءها عندما يقوم المستخدم بالنقر على أي زر موجود في الفأرة و قبل أن يرفع إصبعه عنه.

  • الدالة mouseReleased(MouseEvent e): يتم إستدعاءها بعد أن يقوم المستخدم بإزالة إصبعه عن الزر الذي نقر عليه من الفأرة.

  • الدالة mouseEntered(MouseEvent e): يتم إستدعاءها عندما يقوم المستخدم بتمرير الفأرة فوق شيء.

  • الدالة mouseExited(MouseEvent e): يتم إستدعاءها عندما يقوم المستخدم بإبعاد الفأرة عن فوق شيء.


مثال  على الإنترفيس MouseListener

Main.java
					import java.awt.GridLayout;
					import java.awt.event.MouseEvent;
					import java.awt.event.MouseListener;
					import javax.swing.JLabel;
					import javax.swing.JFrame;

					public class Main {

					public static void main(String[] args) {

					JFrame frame = new JFrame("MouseListener demo");         // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
					JLabel mousePosition = new JLabel(" Mouse Position:");   // mousePosition إسمه Label هنا أنشأنا
					JLabel mouseStatus = new JLabel(" Mouse Status:");       // mouseStatus إسمه Label هنا أنشأنا

					frame.add(mousePosition);                                // frame في الـ mousePosition هنا أضفنا الكائن
					frame.add(mouseStatus);                                  // frame في الـ mouseStatus هنا أضفنا الكائن

					// هنا نضع الأوامر التي نريد تنفيذها عند تفاعل المستخدم مع النافذة بواسطة الفأرة
					frame.addMouseListener(new MouseListener() {
					@Override
					public void mouseClicked(MouseEvent e) {
					mousePosition.setText(" Mouse Position: ("+e.getX()+", "+e.getY() +")");
					mouseStatus.setText(" Mouse Status: Mouse Clicked");
					}

					@Override
					public void mousePressed(MouseEvent e) {
					mouseStatus.setText(" Mouse Status: Mouse Pressed");
					}

					@Override
					public void mouseReleased(MouseEvent e) {
					mouseStatus.setText(" Mouse Status: Mouse Released");
					}

					@Override
					public void mouseEntered(MouseEvent e) {
					mouseStatus.setText(" Mouse Status: Mouse Entered");
					}

					@Override
					public void mouseExited(MouseEvent e) {
					mouseStatus.setText(" Mouse Status: Mouse Exited");
					}
					});

					frame.setSize(300, 250);                                // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250
					frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
					frame.setLayout(new GridLayout(2, 1));                  // لترتيب الأشياء التي أضفناها فيها GroupLayout هنا جعلنا النافذة تستخدم الـ
					frame.setVisible(true);                                 // هنا جعلنا النافذة مرئية

					}

					}
				  

ستظهر لك النافذة التالية عند التشغيل.

مثال يشرح طريقة تعريف الحدث MouseListener في جافا

إذا قمت بالنقر على النافذة بواسطة الفأرة سيتم عرض النص Mouse Status: Mouse Entered و النقطة التي قمت بالنقر عليها مثل Mouse Position: (201, 155).

إذا قمت بالنقر على النافذة بواسطة الفأرة و أبقيت إصبعك فوق الزر سيتم عرض النص Mouse Status: Mouse Pressed.

إذا قمت بالنقر على النافذة بواسطة الفأرة و أبقيت إصبعك فوق الزر, ثم قمت بتحريك الفأرة قليلاً, ثم أزلت إصبعك عن الفأرة, سيتم عرض النص Mouse Status: Mouse Released.

إذا قمت بتمرير الفأرة فوق النافذة سيتم عرض النص Mouse Status: Mouse Entered.

إذا قمت بتمرير الفأرة خارج النافذة سيتم عرض النص Mouse Status: Mouse Exited.

  الإنترفيس MouseMotionListener

يستخدم هذا الإنترفيس للتنبه عندما يقوم المستخدم بتحريك الفأرة.

الإنترفيس MouseMotionListener  يحتوي على دالتين يجب أن تفعل لهما Override عند إنشاء كائن منه:

  • الدالة mouseMoved(MouseEvent e): يتم إستدعاءها بعد أن يقوم المستخدم بتحريك الفأرة.

  • الدالة mouseDragged(MouseEvent e): يتم إستدعاءها عندما يقوم المستخدم بإبقاء إصبعه على أي زر موجود في الفأرة و تحريكها بنفس الوقت بهدف تحديد أشياء موجودة في النافذة بواسطة الفأرة.


مثال  على  الإنترفيس MouseMotionListener


Main.java
import java.awt.FlowLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JLabel;
import javax.swing.JFrame;
 
public class Main {
 
    public static void main(String[] args) {
 
        JFrame frame = new JFrame("MouseMotionListener demo");  // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
        JLabel mousePosition = new JLabel("Mouse Position:");   // mousePosition إسمه Label هنا أنشأنا
 
        frame.add(mousePosition);                               // frame في الـ mousePosition هنا أضفنا الكائن
 
        // هنا نضع الأوامر التي نريد تنفيذها عند تفاعل المستخدم مع النافذة بواسطة الفأرة
        frame.addMouseMotionListener(new MouseMotionListener() {
 
            @Override
            public void mouseDragged(MouseEvent e) { }
 
            @Override
            public void mouseMoved(MouseEvent e) {
                mousePosition.setText(" Mouse Position: ("+e.getX()+", "+e.getY() +")");
            }
 
        });
 
        frame.setSize(300, 250);                                // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
        frame.setLayout(new FlowLayout());                      // لترتيب الأشياء التي أضفناها فيها FlowLayout هنا جعلنا النافذة تستخدم الـ
        frame.setVisible(true);                                 // هنا جعلنا النافذة مرئية
 
    }
 
}
		

ستظهر لك النافذة التالية عند التشغيل.

عند تحريك الفأرة فوق النافذة, سيتم إظهار مكان وقوف سهم الفأرة بالنسبة للنافذة.

مثال يشرح طريقة تعريف الحدث MouseMotionListener في جافا

  تعلم Java Swing 

أفضل كورس لتعلم Java swing من الصفر الى الاحتراف .