2017-02-20 74 views
0

我有一个文本控件和与之关联的GridLayout。当我创建它时,将创建一个具有一定宽度的文本字段。当我在文本字段中输入文本并保存时,我将更新模型。再次,如果我关闭该特定视图并再次打开它,则文本字段将随之前输入的文本宽度展开。如何限制这一点,并提供一个特定的宽度文本框,以便它不会进一步扩大。如何限制swt中文本字段的大小?

回答

2

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

在最简单的,这将是:

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(); 
+0

我如何能实现convertWidthInCharsToPixels的相同的功能(10),没有派生对话框类 –

+1

添加的代码做字符宽度计算的答案 –