如何找到完整显示 window 标题的最小宽度

How to find the minimum width to display the window title completely

我正在维护一些现有的 Java 代码,因此我不打算对其当前的完成方式进行重大更改。我从对话框中删除了一些项目(基本上是 org.eclipse.swt.widgets.Shell),现在对话框显示得更小了,小到标题和菜单栏无法完整显示。我可以设置最小宽度来解决这个问题,但由于用户可能有不同的屏幕尺寸和分辨率,我不想尝试 one-size-fits-all 宽度。

我使用

将其设置为首选大小
getShell().computeSize

.setSize

它改善了这种情况(菜单完全显示),但对话框标题仍然被省略。

有没有办法确定对话框的最小宽度以完整显示标题?

或者,是否有办法获取显示的标题(包括省略号,如果有)或确定标题是否被省略?

IFAIK,无法计算 shell 的确切大小,因此它的标题始终可以未缩短显示。

虽然可以使用 图形上下文 计算字符串的宽度,如下所示:

GC gc = new GC(shell);
Point titleSize = gc.textExtent("title");
gc.dispose();
int titleWidth = titleSize.x;

无法确定 shell 的标题 trim。也就是说,space 被关闭、最小化和最大化按钮以及系统菜单(如果完全可见)占用。

不过,要获得提示,应该可以使用 shell.computeTrim(0, 0, titleSize.x, titleSize.y)。返回的矩形的 width 字段应给出 shell 所需宽度的近似值。