سؤال

علي بناء كبيرة بدلا شكل مع العديد من عناصر التحكم.الضوابط تنقسم في الأساسية ضوابط/إعدادات مدد ضوابط/إعدادات.يمكن للمستخدم أن يقرر ما إذا كان يريد أن يرى إلا الأساسية أو الأساسية التحكم الموسعة.

لقد أسقطت جميع عناصر التحكم الموسعة على الخاصة بهم JPanel بحيث يمكن بسهولة التبديل بين اثنين من وجهات النظر من خلال عرض أو إخفاء هذا الفريق.

حاليا أنا أستخدم GroupLayout و ما يحدث هو أن الضوابط على لوحات مختلفة ليست الانحياز:

Label aaa:     Text field
Label a:       Text field
Label aaaaaa:  Text field
----------------------------
Label b:    Text field
Label bbb:  Text field
Label bb:   Text field

للأسف لقد وجدت الآن طريقة "مزامنة" تخطيطات فريقي (باستثناء استخدام AbsoluteLayout ثابتة تحكم الإحداثيات)

  • هل هناك أي طريقة لتحقيق هذا ؟
  • هو التصميم كله معيبة ؟

تحرير: إذا كان من الممكن أود أن الحفاظ على GroupLayout مدير.

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

المحلول

بقدر ما أعرف, لا سوينغ LayoutManager (من JRE أو مفتوحة المصدر) يمكن أن تمتد عدة لوحات.

أنا أعمل حاليا على مثل هذه الميزة (وهو ما يسمى "تخطيطات التزامن") من أجل بلدي DesignGridLayout المشروع, ولكنها ليست شيئا من السهل أن تنفذ (لقد بدأت في حوالي 2 أسابيع وأنا لا أعرف بالضبط إذا كنت سوف تحصل على شيء مثير للاهتمام, ولكن لا يزال لدي أمل كبيرة بالنسبة لها؛ -))

خيار واحد هل يمكن أن تحقق سيكون إضافة جميع المكونات إلى نفس الفريق (مع واحد فقط GroupLayout ثم) إخفاء/إظهار لهم بناء على المستخدم اختيار.نأمل, GroupLayout سوف تتكيف مع حجم الحالة (بعد استدعاء حزمة()).

إذا GroupLayout يتصرف جيدا, ثم سيكون فقط مسألة استدعاء حزمة() في كل مرة بعد المستخدم التغييرات اختياره لإظهار/إخفاء الحقول الموسعة.

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

نصائح أخرى

ربما أسهل (جيد) طريقة للقيام بذلك هو إضافة جميع المكونات على اللوحة الرئيسية.تعيين subpanels غير مبهمة ، إضافة أيضا إلى اللوحة الرئيسية.لوحة رئيسية احتياجات محسن الرسم أن يكون مغلقا.

أسلوب آخر هو إضافة فاصل مكون.إلى أسفل لوحة إضافة مكون في نفس العمود كما التسميات التي حيوي يأخذ العرض مكون من حجم مختلف الأساليب من أعلى العلامات.تفعل الشيء نفسه في الاتجاه المعاكس إلى أعلى اللوحة.

أعتقد أن هناك أي طريقة للقيام بذلك مع تخطيط القياسية المديرين.ربما سيكون لديك لكتابة الخاصة بك مدير تخطيط, ولكن لا ينبغي أن يكون من الصعب جدا إذا كنت فرعية GroupLayout.

هل يمكن استخدام جريدلايوت بدلا من GroupLayout والتي سوف تعطيك موحدة التباعد بين الأعمدة

إذا كنت ترغب في الاحتفاظ بها في لوحات منفصلة مع تخطيطات منفصلة:

تكرار عبر كل من التسميات التي تضيفها و العثور على الحد الأقصى المفضلة عرض كل.تكرار للمرة الثانية ، وتعيين حجم المفضل إلى أن كل تسمية المفضل الارتفاع ، ولكن الحد الأقصى للعرض.

هذا هو تفسير ال جريدلايوت.سيؤدي هذا إلى تعيين كل عنصر إلى حجم تتوقع ذلك.مع GridData كائن يمكنك تحديد كيفية مكونات ordere.

أمثلة

alt text
(المصدر: sun.com)

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