如果我有一个带有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 (); } }
Martin Thura.. 5
做这样的事情:
Text text = new Text(shell, SWT.BORDER); text.setText ("Text Field"); text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER));
/:由于这是可接受的答案,因此我删除了错误。谢谢我的纠正。
做这样的事情:
Text text = new Text(shell, SWT.BORDER); text.setText ("Text Field"); text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER));
/:由于这是可接受的答案,因此我删除了错误。谢谢我的纠正。
元素在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对象,该对象还允许您指定组件在屏幕上的放置方式.
您还可以阅读有关Layouts的这篇文章,了解Layouts的工作原理.
作为旁注,构造函数new GridData(int style)在文档中标记为"不推荐".此示例中显示的显式构造函数是首选.