当我在一个或两个setText()
字段上使用Text
时,会将字段的大小调整为文本的长度。我该如何防止这种情况发生?
inner = new Composite(middle, SWT.NONE);
inner.setLayout(new GridLayout(5, false));
chkbxBtn = new Button(inner, SWT.CHECK);
chkbxBtn.setText("Check box button: ");
chkbxBtn.setSelection(false);
new Label(inner, SWT.NONE).setText("Text field 1: ");
startCol = new Text(inner, SWT.BORDER | SWT.NONE);
new Label(inner, SWT.NONE).setText("Text field 2: ");
endCol = new Text(inner, SWT.BORDER | SWT.NONE);
答案 0 :(得分:3)
为了澄清,在更改Text
控件(或一般控件)的文本(或任何其他属性)后,SWT不会重新布局。这是您的代码或调整大小事件导致重新布局。
如果您希望控件具有预设大小,并且其父级使用GridLayout
,则可以将GridData
设置为widthHint
,如下所示:
GridData gridData = new GridData();
gridData.widthHint = ...
text.setLayoutData( gridData );
但是,尝试控制小部件的大小通常是一个坏主意。因此,请确保您的布局策略与UI设计的最佳实践保持一致。
答案 1 :(得分:0)
在某些情况下,更改文字会触发组件重新布局。例如,将错误消息显示为文本验证结果(我在SWT表单中找到了它)。 在GridData中为文本组件设置宽度提示可以解决此问题。宽度提示可以设置为0或所需的最小大小。
GridDataFactory.swtDefaults()//
.grab(true, false)//
.hint(0, SWT.DEFAULT)// width hint prevents text from expanding to full line
.align(SWT.FILL, SWT.CENTER)//
.applyTo(text);