بعد إنشاء واجهة المستخدم الرسومية الأساسية و محرك الرسوم المتحركة, أعرض أساسيات التفاعل من خلال دمج نموذج الحدث الماوس.
وسوف تكون هذه التقنية لإنشاء حدث أو يحدث في كل مرة كنت تتفاعل مع الماوس. سوف يتم القبض على هذا الحدث من خلال واحدة من وحدات برنامجنا, معالجته وتوليد بعض الإجراءات.
وستكون الخطوة الأولى في فهم كيفية تولد هذه الأحداث و, فيما بعد, إدراج إجراءات أكثر تفصيلا. أما الآن فإنه يكفي لتحديد نوع الحدث الذي يحدث وموقف على الشاشة حيث كنت قد قدمت.
ال البرمجة يحركها حدث هو بارادايم البرمجة والتي تتحدد في كل من هيكل وتنفيذ البرامج من قبل الأحداث التي تحدث في النظام, المعرفة من قبل المستخدم أو أنها تسبب.
لفهم البرمجة يحركها حدث, نحن نعارض ذلك إلى ما هو غير: بينما البرمجة متتابعة (ال منظم) هو مبرمج الذي يعرف ماذا سيكون تدفق البرنامج, في برمجة تستند إلى الحدث سوف يكون المستخدم--أو أيا كان أن تقوم بتطبيق البرنامج-التي توجه تدفق البرنامج. على الرغم من أن البرمجة متسلسلة هناك قد يكون تدخل عامل برنامج خارجي, هذه التدخلات سوف يحدث عندما يقرر أنه مبرمج, ليس في أي وقت كما أنه قد يكون في حالة برمجة تستند إلى الحدث.(ال)
تنفيذ واجهة الحدث المستمع
سنقوم بتنفيذ هذا النظام في البداية لا تعقيد الأحداث في فئة فريدة من نوعها من مكتبة الرسومات للنموذج. سوف يكون أول شيء سوف نقوم بتعديل تعريف فئة مسؤولة عن الحفاظ على قاعدة البيانات وقم بطلاء الكائنات الرسومية: “سبورة”. وسوف تبين لنا مع العلامة “implements” هذه الفئة قادرة على الاستماع للماوس.
public class Blackboard يمتد قماش implements موسيليستينير{
واجهة جديدة تتطلب منا أن إضافة مكالمة جديدة للمكتبات جافا العثور على الملفات التي تقوم بتطبيق هذه الواجهة. ونحن سوف نفعل ذلك مع الكلمة المحجوزة “استيراد”.
استيراد java.awt.event.MouseListener;
فإنه سيكون من الضروري لتنفيذ أساليب المعرفة في الواجهة, وكذلك استيراد الفئة “موسيفينت” التي يتم تمريرها كمعلمة إلى هذه الأساليب. في الوقت الحاضر ببساطة نعلن لهم دون إدراج أي وظيفة.
باطل العامة موسيكليكيد(Arg0 موسيفينت) { // جميع السيارات ولدت أسلوب كعب } باطل العامة موسينتيريد(Arg0 موسيفينت) { // جميع السيارات ولدت أسلوب كعب } باطل العامة موسيكسيتيد(Arg0 موسيفينت) { // جميع السيارات ولدت أسلوب كعب } باطل العامة موسيبريسيد(Arg0 موسيفينت) { // جميع السيارات ولدت أسلوب كعب } باطل العامة موسيريليسيد(Arg0 موسيفينت) { // جميع السيارات ولدت أسلوب كعب }
سجل الأحداث
سوف نقوم بتسجيل حدث ماوس كلما حدث. في منشئ فئة أو في طريقة بدء سينضم الدعوة “addMouseListener” للإشارة إلى أن نريد أن نضيف المستمع.
المعلمة تمرير هو اسم الفئة التي يستمع الى الماوس. في حالتنا، فإنه سيشير نفس الفئة كما هو مسجل هذا الحدث أن يتم تنبيهك عند وجود. ويتم ذلك مع التسمية “هذا“.
جمهور Blackboard(){ هذا.addMouseListener(هذا); }
إدارة الأحداث
تحديد اثنين من المتغيرات التي سيتم تخزين إحداثيات موقف الشاشة حيث تم الضغط على الماوس
الباحث خاصة lastx = 0; الباحث خاصة lasty = 0;
تنفيذ واحدة من المهام المذكورة أعلاه, على سبيل المثال الذي يمتد في كل مرة ضغطت على زر الماوس “موسيكليكيد”. في هذه اللحظة سوف نقوم ببساطة الحفاظ على الإحداثيات التي تم الضغط على, على الرغم من أننا يمكن أن يكون معقد البرنامج مع إضافة وظائف.
تكون هذه الإحداثيات في الكائن أو الحدث الذي تم تمريره إلى الدالة, الكائن “موسيفينت”
باطل العامة موسيكليكيد(Arg0 موسيفينت) { لاست = getX arg0.(); لاستي = getX arg0.(); }
سوف نقوم بتعديل الأسلوب المسؤولة عن رسم على الشاشة الرسومات حتى أنه يمكنك الطلاء شيئا في موقف حيث كان الضغط على الماوس. هو تنفيذ أبسط التي تسمح لنا بالتحقق من بيانيا أن لدينا أسر ومعالجة الحدث الماوس.
باطل العامة بينتوفسكرين(الرسومات ز){ Enumeration enum=bd.elements(); Object ob; while(enum.hasMoreElements()){ ob=enum.nextElement(); إذا(OB instanceof سيمبليدراوابل){ ((سيمبليدراوابل) ob).طلاء(ز); } } بينتموسيبوسيشن(ز); }
المسؤول عن هذه الوظيفة “بينتموسيبوسيشن”, هو تنفيذها كتابة بيانيا الإحداثيات المخزنة من موضع الماوس, عن طريق الدالة “الرباط”.
الفراغ خاصة بينتموسيبوسيشن(الرسومات ز) { g.drawString("("+لاست ","+لاستي ")", لاست, لاستي); }
يجب أن يكون متصل لإضافة تعليق.