如何在 SWT 中限制文本字段的大小?

How to limit the size of text field in SWT?

我有一个 Text 控件和与之关联的 GridLayout

当我创建它时,会创建一个具有一定宽度的文本字段。当我在文本字段中输入文本并保存时,我将更新模型。同样,如果我关闭该特定视图并再次打开它,文本字段将扩展为之前输入的文本的宽度。

如何限制这一点并为文本框提供特定宽度,使其不会进一步扩展?

使用 GridDatawidthHint 字段指定控件宽度。

最简单的情况是:

Text text = new Text(....);

GridData data = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);

data.widthHint = 100;  // Some width

text.setLayoutData(data);

如果您在从 Dialog 派生的 class 中执行此操作,您可以使用

data.widthHint = convertWidthInCharsToPixels(10);  // Some number of characters

以字符为单位指定宽度。

您可以在对话框之外使用:

GC gc = new GC(text);

gc.setFont(text.getFont());

FontMetrics fontMetrics = gc.getFontMetrics();

data.widthHint = fontMetrics.getAverageCharWidth() * chars;

gc.dispose();