【问题标题】:Java SWT Browser. Different output on screens with Ultra HD (4K) or higher resolutionsJava SWT 浏览器。具有超高清 (4K) 或更高分辨率的屏幕上的不同输出
【发布时间】:2018-10-26 03:39:49
【问题描述】:

我们在我们的 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>

而使用的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();
  }
}

在1920x1080分辨率96的常规环境下,在Internet Explorer中渲染的内容和查看的内容是一样的(我们将示例文本html保存为文件,用IE打开)

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

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

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

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

【问题讨论】:

  • 你可能需要更新版本的SWT,我建议你选择最新的
  • 你可能还想看看eclipse.org/forums/…
  • 在 4.5、4.6 中做了很多工作。和 SWT 的 4.7。 4.5 的问题在这里(bugs.eclipse.org/bugs/show_bug.cgi?id=479614),后续任务已链接。
  • @Jörg,您的建议解决了问题,您是第一个。您能否写下您的评论作为答案,我接受它,以便您获得积分。
  • 感谢@benchpresser 的友好反馈!

标签: java html browser swt internet-explorer-11


【解决方案1】:

Java 9 中似乎有一些important fixes to high-DPI display(请参阅also here)。如果您的用户社区可以向前发展,那可能是最简单的解决方法。

【讨论】:

    【解决方案2】:

    这可能需要更新版本的 SWT,我建议您选择最新版本。请注意,Photon Eclipse 4.8 即将发布,因此当前的 RC 版本也应该相当不错。 关于在 Windows 上使用 Eclipse 的 HDPI,还有一个相关的论坛帖子here

    【讨论】:

      猜你喜欢
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      相关资源
      最近更新 更多