جافا سوينغ: فصل مكون واجهة المستخدم من سلوك المنطق - كيف تقترب من هذا؟

StackOverflow https://stackoverflow.com/questions/2220648

سؤال

ما أقوم به، في Netbeans على سبيل المثال:

  • قم بإنشاء فئة مكونات UI، فاتحة مع نوع مكون سوينغ، على سبيل المثال JPanel، مثل myuiwidgetjpanel
  • قم بإنشاء فئة منطق / سلوك للتعامل مع السلوك / المنطق، أي ما يحدث عند استخدام مكون UI، على سبيل المثال أزرار داخله المضغوط وما إلى ذلك، myuiwidgetlogic

قد أقوم أيضا بربط المكونات / المنطق معا باستخدام المراجع، إذا كان سلوك / نتائج تأثير مكون واحد / يؤثر آخر، على سبيل المثال، لم تعد بعض الخيارات المعروضة ذات صلة، أو لإعطاء خيارات حساسة للسياق.

ما رأيك بهذا؟ جيد؟ سيئ؟

ماذا تعمل؟

هل كانت مفيدة؟

المحلول

أنا أميل إلى استخدام نموذج نموذج العرض.

في الأساس، يبدو أن ما تفعله: إنشاء فئة تشمل المنطق، منفصلة إلى فئة UI. يجب ألا تحتوي فئات UI على المنطق - فقط الرمز المطلوب لعرض الواجهة.

يمكنك بعد ذلك ربط قيمك الأمامية على فئة نموذج العرض التقديمي الخلفي باستخدام شيء مثل jgoodies ملزمة (أنا أفهم أن الربيع RCP جيد جدا لهذا كذلك).

نصائح أخرى

لقد وجدت هذه المقالة كيفية كتابة مكون سوينغ مخصص مفيدة كمثال للسباكة مندوب واجهة المستخدم.

عملاء غنيين قذرة من قبل شيت هاس ورومين الرجل ينصح على نطاق واسع للحصول على نصائح حول تطبيقات العميل الغنية بصريا.

نظرا لأن مكونات التأرجح تتواصل باستخدام الأحداث عبر مؤشر ترابط إرسال الأحداث، فإنك ستوفر عادة تطبيقات ActionListener للعناصر التي تهتم بها (مثل JButton). إنها تطبيقات ActionListener هذه التي ستتضمن المنطق، ولكن ضع في اعتبارك أنه إذا لم تستخدم الخيوط، فلن يستيب الاستجابة لعنصر UI (مثل JButton) أثناء قيام ActuctionListener ببعض الحسابات والتحكم في بعض العمليات الحسابية.

ما تصفه هو نمط التصميم يسمى MVC (وحدة تحكم عرض النموذج) أنه ليس بلا منازع، ولكنها هي الطريقة الأكثر شعبية لفصل المخاوف في واجهة المستخدم الرسومية. كما يضمن أنه عندما يكون لديك العديد من التمثيلات (وجهات النظر) من نفس البيانات (النموذج)، يمكنك التأكد من تحديث جميعها عند تغيير البيانات. تعتني جزء وحدة التحكم في MVC بإخبار UserInterface الذي يجب تمكين الأجزاء (من بين أشياء أخرى).

http://en.wikipedia.org/wiki/model٪e2٪80٪93View٪E2٪80٪93Controller.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top