Java SWT浏览器.具有超高清(4K)或更高分辨率的屏幕上的不同输出

ben*_*ser 15 html java browser swt internet-explorer-11

我们在Java应用程序中使用SWT浏览器来呈现HTML内容.当环境具有非常高的分辨率(4K)时出现问题.当内容有这样的html时:

<html> <head> <style> .test { font-size: 35px;font-family: Arial;} </style> </head><body><div class='test'>TEST</div></body></html>
Run Code Online (Sandbox Code Playgroud)

用过的java源代码是:

import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

public class SWTTest {

  public void run() {
    Display display = new Display();
    Shell shell = new Shell(display);
    shell.setText("SWT test");
    createContents(shell);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
    display.dispose();
  }

  private void createContents(Shell shell) {
    shell.setLayout(new FillLayout());

   Browser browser = new Browser(shell, SWT.NONE);

   browser.setText("<html> \r\n" + 
            "<head> <style> .test { font-size: 85px;font-family: Arial;} </style> </head>\r\n" + 
            "<body>\r\n" + 
            "<div class=\"test\">TEST</div>\r\n" + 
            "</body>\r\n" + 
            "</html>");
  }

 public static void main(String[] args) {
    new SWTTest().run();
  }
}
Run Code Online (Sandbox Code Playgroud)

在1920x1080且分辨率为96的常规环境中,Internet Explorer中呈现的内容和查看的内容相同(我们将示例文本html保存为文件并使用IE打开)

在一些我们的分辨率超过128和4K尺寸的笔记本电脑上,渲染内容具有与IE相比非常小的35px字体大小的元素(TEST div).

我们知道SWT使用底层IE,但我认为IE会根据屏幕属性(分辨率等)进行一些后处理操作来微调内容并修复元素大小,这在从SWT调用时无法完成.

没有修改html内容的任何解决方案?

系统属性:操作系统:Windows 10(更新)IE:11 Java 1.8.161(32位)SWT:4.3

Jör*_*örg 1

这可能需要较新版本的 SWT,我建议您选择最新版本。请注意,Photon Eclipse 4.8 即将发布,因此当前的 RC 版本应该也相当不错。关于 Windows 上的 HDPI w/ Eclipse,这里还有一个相关的论坛主题。