微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决将外壳从高 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 举报,一经查实,本站将立刻删除。