我正在维护一些现有的Java代码,因此我不希望对其当前的执行方式进行重大更改。我从对话框(基本上是org.eclipse.swt.widgets.Shell)中删除了一些项目,现在对话框显示的小得多,很小,以致标题和菜单栏无法完整显示。我可以设置最小宽度来解决此问题,但是由于用户可能具有不同的屏幕尺寸和分辨率,因此我不希望尝试采用“一刀切”的所有宽度。
我使用
将其设置为首选大小getShell().computeSize
和
.setSize
并改善了这种情况(菜单完全显示),但是对话框标题仍被删除。
是否可以确定对话框的最小宽度以完全显示标题?
或者,是否可以获取显示的标题 (包括省略号,如果有的话)或确定其是否被删除?
答案 0 :(得分:4)
IFAIK,无法计算出外壳的确切大小,以使它的标题始终显示不短。
可以使用 graphics上下文计算字符串的宽度,如下所示:
GC gc = new GC(shell);
Point titleSize = gc.textExtent("title");
gc.dispose();
int titleWidth = titleSize.x;
无法确定外壳的标题修饰。也就是说,关闭,最小化和最大化按钮以及系统菜单(如果完全可见)所占据的空间。
但是要获得提示,应该可以使用shell.computeTrim(0, 0, titleSize.x, titleSize.y)
。返回的矩形的width
字段应提供外壳所需宽度的近似值。