测试系统:Windows 10
将简单的 Shell 从高 dpi 主显示器移动到外部显示器(标准 dpi)时,问题就会显现出来。 Shell 及其内容在辅助监视器上时不会重新缩放。 SWT.ZoomChanged
按预期收到,但我不知道如何对其采取行动,我在 Shell 上没有看到任何似乎执行重新缩放的方法。与此相关:Eclipse 会自动重新缩放额外的窗口和外壳!那是手动完成的吗?是否有示例代码显示如何在所有系统上可靠地执行此操作? (GTK等)
示例代码:
public class ShellTest {
public static void main(String[] args) {
final Display display = Display.getDefault();
final Shell shell = new Shell(display, SWT.SHELL_TRIM);
shell.setLayout(new GridLayout());
shell.addListener(SWT.ZoomChanged, new Listener() {
@Override
public void handleEvent(Event event) {
System.out.println("ZoomChanged: " + event);
}
});
Button btn = new Button(shell, SWT.PUSH);
btn.setText("Test");
shell.open();
shell.layout();
while(!shell.isDisposed()) {
if(!display.readAndDispatch()) {
display.sleep();
}
}
}
}