Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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 如何使文本字段水平填充100%_Java_Eclipse_Swt - Fatal编程技术网

Java 如何使文本字段水平填充100%

Java 如何使文本字段水平填充100%,java,eclipse,swt,Java,Eclipse,Swt,如果我有一个带有SWT的文本字段,如何使字段填充到100%或某个指定的宽度 例如,此文本字段在水平方向上只能达到这么多 public class Tmp { public static void main (String [] args) { Display display = new Display (); Shell shell = new Shell (display); GridLayout gridLayout = new Gri

如果我有一个带有SWT的文本字段,如何使字段填充到100%或某个指定的宽度

例如,此文本字段在水平方向上只能达到这么多

public class Tmp {
    public static void main (String [] args) {
        Display display = new Display ();
        Shell shell = new Shell (display);
        GridLayout gridLayout = new GridLayout ();
        shell.setLayout (gridLayout);

        Button button0 = new Button(shell, SWT.PUSH);
        button0.setText ("button0");

        Text text = new Text(shell, SWT.BORDER | SWT.FILL);
        text.setText ("Text Field");

        shell.setSize(500, 400);
        //shell.pack();
        shell.open();

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

这样做:

Text text = new Text(shell, SWT.BORDER);
text.setText ("Text Field");
text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER));

/:由于这是公认的答案,我将删除错误。Thx用于纠正我。

组件中元素的位置取决于您使用的布局对象。在提供的示例中,您使用的是GridLayout。这意味着您需要提供一个特定的LayoutData对象来指示您希望组件的显示方式。对于GridLayout,对象是GridData

要实现所需的功能,必须创建一个GridData对象,该对象将获取所有水平空间并填充该空间:

// Fills available horizontal and vertical space, grabs horizontal space,grab
// does not  grab vertical space
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, false);
text.setLayoutData(gd);
其他方法包括使用不同的LayoutManager,例如FormLayout。此布局使用FormData对象,该对象还允许您指定组件在屏幕上的放置方式


作为旁注,构造函数new GridData(int样式)在文档中标记为“不推荐”。首选此示例中显示的显式构造函数。

不推荐使用构造函数GridData(int)。使用“new GridData(SWT.FILL,SWT.CENTER)”代替,因为GridData对象充当网格单元计算的缓存,所以不应重用它们。GridData重用可能导致布局错误,共享一个公共GridData的多个组件被截断为最小型组件的大小。这是GridData的javadoc中的内容。现在看来这是错误的(可能API已经更改了?),设置了最小维度,不能与这些SWT常量一起使用。