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

时间:2021-01-03 06:00:56

标签: swt jface

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

0 个答案:

没有答案
相关问题