SWT 设置 shell 大小以跨越多个监视器

SWT set shell size to span multiple monitors

我的任务是打开一个 SWT shell 以便它跨越多个监视器。

所以我靠shell.setLocation(x, y)在指定位置打开shell和shell.setSize(width, height)设置维度

如果我使用的宽度大于单个显示器(例如,3840 用于两个显示器),则 shell 会以某种方式调整以正好适合一个显示器(即 1920)。

发生在 Windows 和 Linux。

最小示例:

public class ShellSample {
    public static void main(final String[] args) {
        final Display display = new Display();
        final Shell shell = new Shell(display, SWT.NO_TRIM);
        final Window win = new ApplicationWindow(shell) {
            @Override
            protected void configureShell(final Shell shell) {
                shell.setLocation(0, 0);
                shell.setSize(3840, 100);
            }
        };
        win.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        shell.dispose();
        display.dispose();
    }
}

愚蠢的我。

实际上,我调整的不是 SWT shell,而是 JFace window。

所以解决方案是覆盖 constrainShellSize 方法...