Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SWT布局-无法在GridLayout内垂直居中放置文本小部件_Java_Eclipse_Swt - Fatal编程技术网

Java SWT布局-无法在GridLayout内垂直居中放置文本小部件

Java SWT布局-无法在GridLayout内垂直居中放置文本小部件,java,eclipse,swt,Java,Eclipse,Swt,我正在将应用程序中的许多SWT标签转换为文本小部件,因为我们需要使软件更易于访问。屏幕阅读器很难读取标签值,但如果我们使用只读文本小部件,就可以轻松地读取标签值 将gridlayout中的几个标签转换为只读文本后,我们似乎无法使文本垂直居中。下面是一个简单的计算器示例,我们看到了相同的行为。我在GridData和文本上都使用了SWT.CENTER和SWT.FILL,但似乎无法使控件垂直居中 public void initUI() { GridLayout g1 = new G

我正在将应用程序中的许多SWT标签转换为文本小部件,因为我们需要使软件更易于访问。屏幕阅读器很难读取标签值,但如果我们使用只读文本小部件,就可以轻松地读取标签值

将gridlayout中的几个标签转换为只读文本后,我们似乎无法使文本垂直居中。下面是一个简单的计算器示例,我们看到了相同的行为。我在GridData和文本上都使用了SWT.CENTER和SWT.FILL,但似乎无法使控件垂直居中

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


            }
        }

    }
public void initUI(){
GridLayout g1=新的GridLayout(4,真);
g1.水平间距=4;
g1.垂直间距=4;
g1.marginBottom=5;
g1.marginTop=5;
shell.setLayout(g1);
字符串[]按钮={
“Cls”、“Bck”、“关闭”、“7”、“8”、“9”、“/”和“4”,
"5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+"
};
文本显示=新文本(shell,SWT.SINGLE);
GridData GridData=新的GridData();
gridData.horizontalSpan=4;
gridData.horizontalAlignment=gridData.FILL;
display.setLayoutData(gridData);
对于(int i=0;i
我想您的意思是希望文本水平居中(它已经垂直居中)。进行此更改,它将以两种方式居中(我在
文本中添加了
SWT.CENTER
):


这里有一个简单的方法对我有效

Label label = new Label(composite, SWT.CENTER);
label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
label.setText("\nText");
该方法是在文本中添加新行(\n)后缀

Label label = new Label(composite, SWT.CENTER);
label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
label.setText("\nText");