Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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文本组件不会水平填充_Java_Layout_Swt - Fatal编程技术网

Java SWT文本组件不会水平填充

Java SWT文本组件不会水平填充,java,layout,swt,Java,Layout,Swt,我和SWT一起工作,在按照我想要的方式安排事情时遇到了一些问题。本质上,我有一个Text对象,我希望它的宽度是它所在组件的宽度。我可以使用FillLayout,但它下面的按钮也会增长,这不是我想要的 下面是一个屏幕截图来说明问题: 下面是我用来重现的测试代码的示例,并尝试修复该问题: import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayo

我和SWT一起工作,在按照我想要的方式安排事情时遇到了一些问题。本质上,我有一个
Text
对象,我希望它的宽度是它所在组件的宽度。我可以使用
FillLayout
,但它下面的按钮也会增长,这不是我想要的

下面是一个屏幕截图来说明问题:

下面是我用来重现的测试代码的示例,并尝试修复该问题:

import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.wb.swt.SWTResourceManager;


public class Test {

    public static void main(String[] args) {
        Display display = new Display();
        Shell shell = new Shell(display);

        shell.setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
        //setup the layout manager      
        GridLayout layout = new GridLayout(1, false);
        layout.horizontalSpacing = 0;
        layout.marginHeight = 0;
        layout.verticalSpacing = 5;
        layout.marginWidth = 0;
        layout.marginBottom = 20;
        layout.marginTop = 5;       

        shell.setLayout(layout);

        //create the text field
        Text inputField = new Text(shell, SWT.BORDER);
        GridData data =  new GridData();
        data.horizontalAlignment = GridData.FILL;
        data.grabExcessHorizontalSpace = true;
        inputField.setData(data);

        //create the button
        Button lookup = new Button(shell, SWT.PUSH);
        lookup.setText("Lookup");       


        shell.pack();
        shell.open();

        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) display.sleep();
        }
    }
}

我假设这只是因为我没有在
inputField
GridData
对象上正确设置某些内容,但不管它是什么,我肯定看不到它。

您必须使用
setLayoutData()
来设置
GridData
而不是
setData()


顺便说一句:使用
GridData.FILL
,使用
SWT.FILL

您必须使用
setLayoutData()
设置
GridData
而不是
setData()

顺便说一句:使用
GridData.FILL
,使用
SWT.FILL

Text inputField = new Text(shell, SWT.BORDER);
GridData data =  new GridData();
data.horizontalAlignment = SWT.FILL;
data.grabExcessHorizontalSpace = true;
inputField.setLayoutData(data);