如何阻止JFace组合框重新调整窗口大小?

时间:2015-09-14 09:56:21

标签: java combobox swt jface

我有一个Java Eclipse RCP程序,其中我在JFace组合框中有一个长字符串。现在,当我在同一个视图中时,组合框会在其上面添加一个滚动来显示全名。但是只要我调整应用程序的窗口大小,组合框就会伸展自己以容纳冗长的字符串。

如何使组合框保持相同的大小。就像它的尺寸一样,即使在调整窗口大小后也应该保持固定。以下是两个用于演示此问题的屏幕截图。

P.S。我使用的是comboViewer,里面是一个comboBox。

desired behaviour

enter image description here

提前致谢。

1 个答案:

答案 0 :(得分:2)

如果您使用GridLayoutGridData作为布局,则可以在widthHint字段中指定一个值来建议组合的宽度。

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

data.widthHint = 100;

preferredResourceCombo.setLayoutData(data);

如果用户使用大字体,使用这样的固定值可能会导致问题。因此,计算宽度的另一种方法是使用Dialog.convertWidthInCharsToPixels

GC gc = new GC(control);
gc.setFont(control.getFont());
FontMetrics fontMetrics = gc.getFontMetrics();
gc.dispose();

data.widthHint = Dialog.convertWidthInCharsToPixels(fontMetrics, charCount);

如果您的代码位于Dialog,则可以将其简化为:

data.widthHint = convertWidthInCharsToPixels(charCount);
相关问题