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
方法...
我的任务是打开一个 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
方法...