في السابق ، استخدم البرنامج أبسط طريقة الإدخال والإخراج. تتطلب البرامج الحديثة استخدام واجهة المستخدم الرسومية (واجهة المستخدم الرسومية) ، والتي تتضمن القوائم والأزرار ، إلخ. يحدد المستخدم خيارات في القائمة وينقر على الأزرار عبر الماوس لقيادة وحدة دالة البرنامج. يتعلم هذا الفصل كيفية كتابة تجارب علمية واجهة المستخدم الرسومية بلغة Java وكيفية تنفيذ المدخلات والمخرجات من خلال واجهة المستخدم الرسومية.
أوت وتأرجح
في السابق ، كتبت برامج واجهة المستخدم الرسومية في Java ، باستخدام مجموعة أدوات النافذة المجردة (مجموعة أدوات النوافذ المجردة). يمكن اعتبار Swing نسخة محسّنة من AWT ، بدلاً من استبدال AWT ، وهي تحسن وتمديد AWT. لذلك ، عند كتابة برامج واجهة المستخدم الرسومية ، يجب استخدام كل من التأرجح والأموت. يتعايشون في فئة مؤسسة جافا (JFC).
على الرغم من أن كل من AWT و Swing يوفرون فئات تبني عناصر الواجهة الرسومية ، إلا أن جوانبها المهمة تختلف: تعتمد AWT على المنصة الرئيسية لجذب مكونات واجهة المستخدم ؛ . الفرق الأكثر وضوحًا بين Swing و AWT هو ظهور مكونات الواجهة. ومع ذلك ، قد يكون للتطبيق المستند إلى التأرجح نفس المظهر والأناقة على أي منصة.
تراوحت الفصول الدراسية في الأرجوحة من AWT ، وبعض فئات التأرجح تمد مباشرة الفئات المقابلة في AWT. على سبيل المثال ، Japplet و Jdialog و JFrame و Jwindow.
باستخدام الأرجوحة لتصميم واجهة رسومية ، يتم تقديم حزمتين رئيسيتين:
نظرًا لأن الأرجوحة غنية جدًا ، فمن المستحيل تقديم مقدمة شاملة للتأرجح في كتاب مدرسي ، ولكن المعرفة حول الأرجوحة التي تم تقديمها في هذا الفصل تكفي للسماح للقراء بكتابة برامج واجهة المستخدم الرسومية الرائعة.
المكونات والحاويات
المكونات هي عناصر أساسية للواجهات الرسومية التي يمكن للمستخدمين تشغيلها مباشرة ، مثل الأزرار. الحاوية هي عنصر مركب لواجهة رسومية ، وقد تحتوي الحاوية على مكونات ، مثل اللوحة.
لغة Java Prefered Clists لكل مكون ، وتمرر البرامج كائنات مكونة مختلفة من خلالها أو فئاتها الفرعية. إنه الزر. كما أن لغة Java محددة مسبقًا لكل حاوية ، وتنشئ البرامج كائنات حاويات مختلفة من خلالها أو فئاتها الفرعية. على سبيل المثال ، فئة النافذة المحددة مسبقًا JFrame في Swing هي فئة حاوية ، وكائن الفئة الفرعية JFrame أو JFRAME التي تم إنشاؤها بواسطة البرنامج هي نافذة.
من أجل إدارة المكونات والحاويات بطريقة موحدة ، يتم تعريف الفئات الفائقة لجميع فئات المكونات ، ويتم تعريف العمليات المشتركة للمكونات في فئة المكون. وبالمثل ، حدد فئة حاوية الفئة الفائقة لجميع فئات الحاويات ، وتحديد العمليات المشتركة للحاوية في فئة الحاويات. على سبيل المثال ، يتم تعريف طريقة ADD () في فئة الحاوية.
تعد فئات المكونات والحاوية والرسومات فئات رئيسية في مكتبة AWT. لبناء واجهات رسومية معقدة على مستوى هرمي ، يتم التعامل مع الحاويات كمكونات خاصة يمكن وضعها في حاوية أخرى. على سبيل المثال ، افصل عدة أزرار ومربعات نصية في لوحين ، ثم ضع هاتين اللوحين والأزرار الأخرى في النافذة. يمكن لهذه الطريقة لإنشاء واجهات ببناء واجهات معقدة ببناء واجهات مستخدم معقدة بطرق تدريجية.
أساسيات تصميم سائق الحدث
1. الأحداث والمراقبين ومراقبة التسجيل <BR /> الأحداث على الواجهة الرسومية ، يرجى الرجوع إلى عمليات المستخدم التي تحدث على مكون. على سبيل المثال ، إذا انقر المستخدم على زر على الواجهة ، فهذا يعني أن حدثًا حدث على هذا الزر ، وكائن الزر هو مشغل الحدث. يسمى الكائن الذي يراقب الأحداث شاشة ، ويوفر الشاشة طريقة للتعامل مع الأحداث. من أجل ربط الشاشة بكائن الحدث ، من الضروري تسجيل كائن الحدث لإخبار النظام بشاشة كائن الحدث.
يستجيب أخذ البرنامج لأحداث الأزرار كمثال ، يريد البرنامج إنشاء كائن زر ، وإضافته إلى الواجهة ، وتسجيل الزر كشاشة ، ويحتاج البرنامج إلى طريقة للاستجابة لأحداث الأزرار. عند حدوث حدث "Click Button" ، يقوم النظام باستدعاء طريقة معالجة الأحداث المسجلة لهذا الزر لإكمال عمل أحداث زر المناولة.
2. إدراك مهمة التعامل مع الأحداث
هناك حلان رئيسيان لكتابة معالجات الأحداث في لغة Java: أحدهما هو إعادة تعيين المقابض (Eventevt) ، والبرنامج الذي يستخدم هذا الحل هو المزيد من عبء العمل ؛ يوفر Java واجهات متعددة وفقًا لنوع الحدث. عند حدوث حدث ما ، تقوم طريقة المقابض المدمجة للنظام (EVT) تلقائيًا بالاستجابة للأحداث التي تنفذها فئة الشاشة.
يتضمن النموذج المستخدم في حزمة java.awt.event للكشف عن الأحداث والرد عليها المكونات الثلاثة التالية:
كائن المصدر: على مكون الحدث "يحدث" ، يحافظ على اتصال مع مجموعة من الكائنات التي "تستمع" إلى الحدث.
كائن مراقبة: يوفر كائن من فئة واجهة محددة مسبقًا.
كائن الحدث: يحتوي على معلومات تصف حدثًا معينًا تم تمريره من المصدر إلى الشاشة عند حدوث حدث ما.
يجب أن يقوم برنامج تشغيل الحدث بالقيام به بالإضافة إلى إنشاء كائنات المصدر والكائنات الشاشة أيضًا ترتيب الشاشة لفهم كائنات المصدر ، أو تسجيل الشاشة باستخدام كائنات المصدر. يحتوي كل كائن مصدر على قائمة مراقبة مسجلة ، مما يوفر طريقة لإضافة كائنات شاشة إلى تلك القائمة. سيقوم النظام بإخطار كائن الشاشة بالأحداث التي تحدث على كائن المصدر فقط بعد تسجيل كائن المصدر الشاشة.
3. واجهة نوع الحدث ومراقبة <BR /> في لغة Java ، من أجل تسهيل النظام لإدارة الأحداث وتسهيل البرنامج لتسجيل الشاشات ، يصنف النظام الأحداث ، والتي تسمى أنواع الأحداث. يوفر النظام واجهة لكل نوع حدث. يجب أن يكون فئة كائن شاشة تنفيذ الواجهة المقابلة وتوفير طريقة الاستجابة للأحداث المحددة بواسطة الواجهة.
أخذ حدث زر استجابة البرنامج كمثال ، يمكن أن يكون زر كائن فئة JButton هو بادئ حدث. عندما ينقر المستخدم على الزر المقابل للزر الموجود في الواجهة ، سيقوم كائن الزر بإنشاء حدث من نوع ActionEvent. إذا كان كائن الشاشة هو OBJ و OBJ الفئة هو OBJ ، فيجب على فئة OBJ تنفيذ واجهة ActionListener في AWT لتنفيذ طريقة ActionPerformed لمراقبة أحداث زر. يجب أن يسجل كائن الزر شاشة OBJ باستخدام طريقة AddActionListener.
عند تشغيل البرنامج ، عندما ينقر المستخدم على الزر المقابل لكائن الزر ، يمرر النظام كائن ActionEvent من كائن حريق الحدث إلى الشاشة. يحتوي كائن ActionEvent على معلومات بما في ذلك الزر الذي يحدث الحدث ، ومعلومات أخرى حول الحدث.
يوضح الجدول التالي بعض أنواع الأحداث التمثيلية وبعض مكونات التأرجح التي تنتج هذه الأحداث. عند حدوث حدث فعلي ، ستحدث سلسلة من الأحداث على سبيل المثال ، في حالة انقر فوق الزر ، فإن حدث changeEvent سيؤدي إلى أن يكون على الزر. يعني حدث Actionevent أنه تم إصدار الماوس. لكن التطبيقات عادة ما تتعامل مع حدث واحد فقط من الإجراء الكامل للضغط على زر.
يحتوي كل نوع حدث على واجهة شاشة مقابلة ، ويسرد الجدول 11-2 طرق كل واجهة. يجب أن تنفذ الفئات التي تنفذ واجهات الشاشة جميع الطرق المحددة في الواجهة.