سؤال

في تطبيق Swing الخاص بنا ، نستخدم أداة اختبار تلقائية في QA (QF-Test) التي تعمل بشكل أفضل عند تسمية مكونات التأرجح. (استدعاء Component.setName). على الرغم من أن مهام الاسم التلقائية الخاصة بهم تعمل بشكل جيد ، إلا أننا نقدم مكونات SwingX في المشروع والتي تسبب بعض المشكلات للأداة.

هناك الكثير من المكونات المحتملة على الشاشة (شاشات إدخال بيانات تطبيق العمل النموذجية الخاصة بك ، ولكن الكثير منها - التطبيق على مستوى تعقيد ERP) ، ما هي الخيارات الموجودة لتسمية مكونات التأرجح بطريقة غير مزعجة بشكل معقول ؟

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

المحلول

عادةً ما أقوم بتخزين الحقول في jpanel في خصائص على jpanel ، مثل هذا:

private JLabel firstNameLabel;
private JTextField firstNameTextField;

في نهاية الروتين الذي يثبت هذه المكونات وتضع هذه المكونات ، يمكنك تشغيل روتين يستخدم java.lang.reflect لحلق من خلال كل خاصية للوحة. إذا نزلت عقار من الفصل Component, ، تستطيع الاتصال setName عليها مع اسم العقار. على سبيل المثال ، سينتهي الأمر بالاتصال:

this.firstNameLabel.setName("firstNameLabel");
this.firstNameTextField.setName("firstNameTextField");

... إلا من خلال java.lang.reflect

يمكن أن يكون لديك أيضًا روتين فحص أسماء الحالات الوعرة للمتغيرات واستبدالها بحالة قياسية بالمسافات. هذا من شأنه أن يجعلهم أكثر قابلية للقراءة.

سيضمن هذا النهج أنه بغض النظر عن المكونات التي تضيفها إلى لوحة ، فإنها ستحصل جميعًا على أسماء ودية.

نصائح أخرى

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

لقد قمت بتنفيذ استراتيجية تسمية عامة (وهذا يفعل ذلك) الشجاعة.

بالمناسبة ، تسمية المكون ليست مثيرة للاهتمام فقط لاختبار واجهة المستخدم ، ولكن قد يكون أيضًا مفيدًا لاستراتيجيات حقن الموارد (I18N من المكونات).

كيف تبني الواجهة؟ يسمح JFormDesigner وربما معظم المحررين الآخرين بتعيين اسم المكون تلقائيًا ، وهو مفيد للغاية. في معظم الأوقات ، لا يتعين علي التفكير في أسماء المكونات على الإطلاق. الاستثناءات فقط هي مكونات لا يتم وضعها مع JFormDesigner.

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