如果我有一个包含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 ();
}
}
答案 0 :(得分:5)
做这样的事情:
Text text = new Text(shell, SWT.BORDER);
text.setText ("Text Field");
text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER));
/:由于这是接受的答案,我删除了错误。谢谢你纠正我。
答案 1 :(得分:5)
元素在Component中的定位取决于您使用的Layout对象。在提供的示例中,您使用的是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对象,该对象还允许您指定组件在屏幕上的放置方式。
You can also read this article on Layouts to understand how Layouts work
作为旁注,构造函数new GridData(int style)在文档中标记为“不推荐”。此示例中显示的显式构造函数是首选。