将外壳从高 dpi 移动到低 dpi 显示器不会重新缩放外壳及其内容 (SWT)

问题描述

测试系统: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();
        }
    }
}
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...