如何阻止 JFace 组合框在 window 重新调整大小时重新调整大小?
How to stop JFace combo box from re sizing on a window re size?
我有一个 Java Eclipse RCP 程序,其中的 JFace 组合框内有一个长字符串。现在,当我在同一个视图中时,组合框会在其上附加一个滚动条以显示全名。但是一旦我重新调整应用程序 window 的大小,组合框就会自行拉伸以容纳冗长的字符串。
如何使组合框保持相同大小。就像它的大小应该保持固定,即使在我调整 window 的大小之后也是如此。这里有两个屏幕截图来演示这个问题。
P.S。我正在使用 comboViewer 并在其中放置一个 comboBox。
提前致谢。
如果您使用 GridLayout
和 GridData
作为您的布局,您可以在 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);
我有一个 Java Eclipse RCP 程序,其中的 JFace 组合框内有一个长字符串。现在,当我在同一个视图中时,组合框会在其上附加一个滚动条以显示全名。但是一旦我重新调整应用程序 window 的大小,组合框就会自行拉伸以容纳冗长的字符串。
如何使组合框保持相同大小。就像它的大小应该保持固定,即使在我调整 window 的大小之后也是如此。这里有两个屏幕截图来演示这个问题。
P.S。我正在使用 comboViewer 并在其中放置一个 comboBox。
提前致谢。
如果您使用 GridLayout
和 GridData
作为您的布局,您可以在 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);