Frage

Ich bin mit Gridlayout in meiner SWT-GUI-Anwendung. Ich habe folgende Griddata für jede Rasterzelle definiert ist. Die Gitterzelle selbst ist nur ein Etikett.

    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;

Und ich erstellen jedes Label Element wie folgt -

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

Jetzt Mein Problem ist, trotz der Verwendung von Verticalsach verticalIndent Eigentum und SetAlignment auf dem Etikett selbst, ich bin der Text ausrichten erhalten vertikal zentrierte in Bezug auf den Gitterzellenbereich (25 x 25) nicht in der Lage. Ich glaube, ich bin etwas fehlt. Wie kann ich die vertikal zentrierte Ausrichtung in einer Gitterzelle erreichen?

War es hilfreich?

Lösung

Es gibt keine setVerticalAlignment () auf einem Etikett, und wenn Sie die Höhe einstellen, die heightHint im LayoutData verwenden, das wird die Größe der Steuerung und effektiv hindert Sie daran es in der Mitte einstellen. Eine Abhilfe wäre das Label zu einem Verbund setzen mit der Größe, die Sie wollen, und in der Mitte dann die Kontrolle. Z.

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));

Andere Tipps

CLabel? Warum Sie es nicht benutzen?

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

Auch, können Sie leftmargin, Right topmargin, Bottom.

(Es tut mir leid für die nach 3 Jahre später)

Ich rang auch mit diesem Thema. Label unterstützt keine Polsterung. Ich zog stattdessen mit StyledText auf.

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);

Dies hat den Trick für mich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top