سؤال

أنا باستخدام جريدلايوت في ص واجهة التطبيق.لدي التالية GridData تعريف لكل خلية الشبكة.خلية الشبكة في حد ذاته هو مجرد تسمية.

    GridData gridData = new GridData();
    gridData.horizontalAlignment = GridData.FILL;
    gridData.grabExcessHorizontalSpace = true;
    gridData.grabExcessVerticalSpace = true;
    gridData.heightHint = 25;
    gridData.widthHint = 25;
    gridData.verticalAlignment = GridData.VERTICAL_ALIGN_CENTER;
    gridData.verticalIndent = 10;

و أنا خلق كل يبل عنصر مثل هذا -

    Label l = new Label(shell, SWT.BORDER);
    l.setAlignment(SWT.CENTER);
    l.setText("some text");
    l.setLayoutData( gridData );

الآن مشكلتي هي وعلى الرغم من استخدام verticalAlignment الملكية ، verticalIndent الممتلكات setAlignment على التسمية نفسها ، أنا لست قادرا على الحصول على محاذاة النص عموديا تركزت فيما يتعلق خلية الشبكة المنطقة ( 25 × 25 ).أعتقد أنا في عداد المفقودين شيء.كيف يمكنني تحقيق عموديا المحاذاة في شبكة الخلوي ؟

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

المحلول

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

Composite labelCell = new Composite(shell, SWT.BORDER);
GridData gridData = new GridData();
gridData.heightHint = 250;
gridData.widthHint = 250;
labelCell.setLayoutData(gridData);
labelCell.setLayout(new GridLayout());
Label l = new Label(labelCell , SWT.NONE);
l.setText("some text");
l.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));

نصائح أخرى

CLabel?لماذا لا تستخدمه ؟

CLabel cl = new CLabel(shell, SWT.CENTER);
cl.setBounds(0, 0, 100, 100);
cl.setText("Custom Label!!!");

حتى يمكنك استخدام leftMargin, رايتمارجين, topMargin, bottomMargin.

( أنا آسف بعد 3 سنوات )

وأنا أيضا تصارع مع هذه المسألة. Label لا يدعم الحشو. أنا أنهى باستخدام StyledText بدلا من ذلك.

final StyledText text = new StyledText(parent, SWT.WRAP);
final int padding = 5;

text.setLeftMargin(padding);
text.setRightMargin(padding);
text.setTopMargin(padding);
text.setBottomMargin(padding);

text.setWordWrap(true);
text.setCaret(null);

وهذا لا حيلة لي.

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