Я в процессе преобразования многих меток SWT в нашем приложении в текстовые виджеты, потому что мы должны сделать наше программное обеспечение более доступным. Программы чтения с экрана испытывают затруднения при чтении значений меток, но могут легко, если мы используем текстовые виджеты только для чтения.
После преобразования нескольких надписей в сетке в текст только для чтения, мы не можем получить текст по центру. Ниже приведен простой пример калькулятора, в котором мы видим то же поведение. Я поиграл с SWT.CENTER, SWT.FILL как в GridData, так и в Text, но, похоже, не могу получить контроль по центру по вертикали.
public void initUI() {
GridLayout g1 = new GridLayout(4, true);
g1.horizontalSpacing = 4;
g1.verticalSpacing = 4;
g1.marginBottom = 5;
g1.marginTop = 5;
shell.setLayout(g1);
String[] buttons = {
"Cls", "Bck", "", "Close", "7", "8", "9", "/", "4",
"5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+"
};
Text display = new Text(shell, SWT.SINGLE);
GridData gridData = new GridData();
gridData.horizontalSpan = 4;
gridData.horizontalAlignment = GridData.FILL;
display.setLayoutData(gridData);
for (int i = 0; i < buttons.length; i++) {
if (i == 2) {
Label lbl = new Label(shell, SWT.CENTER);
GridData gd = new GridData(SWT.FILL, SWT.FILL, false, false);
lbl.setLayoutData(gd);
} else {
Text btn = new Text(shell,SWT.SINGLE | SWT.READ_ONLY | SWT.BORDER);
btn.setText(buttons[i]);
GridData gd = new GridData(SWT.CENTER, SWT.CENTER, true, true);
gd.widthHint = 50;
gd.heightHint = 30;
btn.setLayoutData(gd);
btn.selectAll();
}
}
}