كيفية تعيين ارتفاع سبحانه وتعالى قائمة في الصفوف ؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

لدي الدرجة على أساس Composite أن يضمن أحد سبحانه وتعالى List سبيل المثال.باستخدام الإعدادات الافتراضية القائمة خمسة صفوف على ويندوز إكس بي نظام.دون الاعتماد على القرص الثابت تلوينها بكسل القيم أو إعدادات DPI و كيف يمكنني ضبط ارتفاع قائمة (المحيطة مركب) على عدد محدد من الصفوف ، يقول 3 ، دون أي إضافة الداخلية الهوامش ؟

public FileSetBox(Composite parent, int style)
{
    super(parent, style);

    setLayout(new FillLayout());

    this.list = new List(this, SWT.V_SCROLL);

    ...
}

تحديث:

الأعمال التالية ، ولكن لأنها لا تأخذ في الاعتبار ارتفاع وأضاف الحدود ، مما يؤدي في أجزاء من السطر الأخير يجري تغطيتها.أي أفكار عن كيفية حساب هذا أيضا ؟

public FileSetBox(Composite parent, int style)
{
    ...
    GC gc = new GC(this);
    gc.setFont(this.list.getFont());
    this.preferredHeight = gc.getFontMetrics().getHeight() * 3;
    gc.dispose();
    ...
}

@Override
public Point computeSize(int arg0, int arg1)
{
    Point size = super.computeSize(arg0, arg1);
    return new Point(size.x, this.preferredHeight);
}
هل كانت مفيدة؟

المحلول

لا يمكنك استخدام القائمة.getBorderWidth() قائمة.getItemHeight() للحصول على الارتفاع ؟

نصائح أخرى

public FileSetBox(Composite parent, int style)
{
    super(parent, style);

    setLayout(new GridLayout(1, false));

    this.list = new List(this, SWT.V_SCROLL);

    GridData data = new GridData(GridData.FILL_BOTH);
    data.heightHint = 10 * ((List)control).getItemHeight(); // height for 10 rows
    data.widthHint = getStringWidth(25, list); // width enough to display 25 chars
    list.setLayoutData(data);

    ...
}

    public static int getStringWidth(int nChars, Control control){
        GC gc = new GC(control);
        gc.setFont(control.getFont());
        FontMetrics fontMetrics = gc.getFontMetrics();
        gc.dispose();
        return nChars * fontMetrics.getAverageCharWidth();
    }

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