Problema de diseño de SWT: ¿es posible el relleno para etiquetas?

Estoy usando GridLayout en mi aplicación SWT GUI. Tengo el siguiente GridData definido para cada celda de la cuadrícula. La celda de la cuadrícula en sí es solo una etiqueta.

    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;

Y creo cada elemento lable de esta manera:

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

Ahora, mi problema es que, a pesar de usar la propiedad verticalAlignment, la propiedad verticalIndent y setAlignment en la etiqueta, no puedo alinear el texto centrado verticalmente con respecto al área de la celda de la cuadrícula (25 x 25). Creo que me estoy perdiendo algo. ¿Cómo puedo lograr la alineación centrada verticalmente en una celda de cuadrícula?

Respuesta 1

No hay setVerticalAlignment () en una etiqueta y, si establece la altura, utilizando la altura de pista en LayoutData, se convierte en el tamaño del control y evita que lo establezca en el medio. Una solución alternativa sería colocar la etiqueta en un compuesto con el tamaño que desee y luego centrar el control. P.ej

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));
Respuesta: 2

CLABEL? ¿Por qué no lo usas?

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

Incluso, puede usar leftMargin, rightMargin, topMargin, bottomMargin.

(Lo siento después de 3 años después)

Respuesta: 3

Sé que se llamará a super cada vez que creamos un objeto de clase hijo. Pero, lo que específicamente quiero saber es que cargará la clase o creará el objeto de esa clase principal. ...

Hemos recibido código Java de un proveedor de software. Contiene muchos bloques try-catch sin nada en la parte catch. Están por todo el lugar. Ejemplo: prueba {spaceBlock ....

Soy un novato en Spring, comencé a desarrollar una aplicación para cargar archivos, utilicé la documentación oficial de Spring pero tengo este error: el procesamiento del controlador falló; La excepción anidada es java.lang ....

Estoy tratando de actualizar la base de datos una vez que he cambiado RichTextBox y he salido de RichTextBox (es decir, no quiero obligar al usuario a presionar un "botón Actualizar"). Sin embargo, mi código arroja el ...