设置文本后保持SWT文本框的大小

4

当我在一个或两个Text字段上使用setText()时,它会将字段大小调整为文本的长度。如何防止这种情况发生?

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);

你能提供一个 MCVE 吗? - Loris Securo
你能展示一下你的完整代码吗? - Ousmane D.
1
我看到你是 SO 的新手如果你觉得某个回答解决了问题,请点击绿色的勾选标记将其标记为“已接受”。这有助于保持对仍未得到答案的旧帖子的关注。 - Rüdiger Herrmann
2个回答

2

需要澄清的是,SWT在更改Text控件(或其他控件)的文本(或任何其他属性)后不会重新布局(或一般控件)。是您的代码或调整大小事件导致重新布局。

如果您想让控件具有预设大小,并且其父级使用了GridLayout,则可以像这样设置带有widthHintGridData

GridData gridData = new GridData();
gridData.widthHint = ...
text.setLayoutData( gridData );

然而,试图控制小部件的大小通常是一个坏主意。因此,请确保您的布局策略与UI设计的最佳实践相一致。


2

在一些情况下,更改文本会导致组件重新布局。例如,在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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接