عندما أحاول محاذاة الحقول رأسياً ، فإنهم لا يتصرفون ما كنت أتوقعه؟ (Blackberry JDE4.5.0 Eclipse)

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

سؤال

أنا أستخدم المكونات الإضافية Eclipse & JDE 4.5.0. كيفية محاذاة الحقول عموديا. هل يمكننا محاذاة الحقول مثل LEFT_BOTTOM,RIGHT_BOTTOM, LEFT_VCENTER, RIGHT_VCENTER, CENTER(عموديا وأفقيا) ، BOTTOM_CENTER, ، إلخ...؟

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

المحلول

إن مديري ميدان UI Blackberry مزعجون عند التعامل مع المحاذاة الميدانية. يبدو أن المديرين يتجاهلون جميع أعلام الأناقة (مثل HCENTER, VCENTER, ، إلخ) ، لذا فإن الطريقة الوحيدة التي ستتمكن من القيام بذلك هي تجاوز sublayout طريقة مديرك وافعل ذلك بنفسك.

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

VerticalFieldManager    mainmanager     = new VerticalFieldManager(Field.USE_ALL_WIDTH | Field.USE_ALL_HEIGHT)
{
    protected void sublayout( int width, int height ) {

        super.sublayout( width, height );

        width = getWidth();
        height = getHeight();

        for (int i = 0;i < this.getFieldCount() - 1; i++)
        {
            Field field = this.getField(i);
            //this positions the item in the middle of the manager
            int x = (int)((width - field.getWidth()) * 0.50);
            setPositionChild(field, x, field.getTop());
        }
    }

يرجى ملاحظة أن USE_ALL_WIDTH و USE_ALL_HEIGHT أعلام النمط مهمة. إذا كنت ترغب في القيام بأشياء مثل التركيز العمودي ، أو المحاذاة اليمنى السفلية ، وما إلى ذلك ، فستحتاج إلى كتابة رمز تحديد المواقع بنفسك. لمحاذاة اليمين السفلي على سبيل المثال ، يمكنك تعيين موضع X على عرض المدير مطروحًا منه عرض الحقل ، وموضع Y إلى ارتفاع المدير ناقص ارتفاع الحقل.

إذا كنت تريد أن تكون قادرًا على استخدام فئة مديرة واحدة للتعامل مع أنماط مختلفة متعددة (مثل أسفل اليمين ، أسفل اليسار) ، يمكنك إضافة بعض المنطق في Sublayout للتحقق من علامة نمط الحقل ثم وضع الحقل بشكل مناسب.

نأمل أن يكون كل هذا منطقيًا ويساعدك. قون

نصائح أخرى

يقبل HorizontalfieldManager فقط أنماط المحاذاة الرأسية ، وقبل VerticalfieldManager فقط المحاذاة الأفقية. هذا هو. مزعج ++

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