如何限制swt中文本字段的大小?
问题描述:
我有一个文本控件和与之关联的GridLayout。当我创建它时,将创建一个具有一定宽度的文本字段。当我在文本字段中输入文本并保存时,我将更新模型。再次,如果我关闭该特定视图并再次打开它,则文本字段将随之前输入的文本宽度展开。如何限制这一点,并提供一个特定的宽度文本框,以便它不会进一步扩大。如何限制swt中文本字段的大小?
答
使用GridData
的widthHint
字段指定控制宽度。
在最简单的,这将是:
Text text = new Text(....);
GridData data = new GridData(SWT.BEGINNING, SWT.CENTER, false, false);
data.widthHint = 100; // Some width
text.setLayoutData(data);
如果您是从Dialog
派生的类这样做,你可以使用
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();
我如何能实现convertWidthInCharsToPixels的相同的功能(10),没有派生对话框类 –
添加的代码做字符宽度计算的答案 –