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

标签 java html 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>

使用的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的常规环境下,渲染的内容和在IE浏览器中看到的内容是一样的(我们将示例文本html保存为文件,用IE打开)

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

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

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

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

最佳答案

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

关于Java SWT 浏览器。超高清 (4K) 或更高分辨率屏幕上的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50364859/

相关文章:

java - 如何让我的 Java 应用程序从某个在线时钟获取全局时间

java - 算法复杂度分析

单击开始按钮时的 JavaScript 倒计时器,显示小时、分钟和秒

用于在两个 div 上设置相等高度的 jQuery 函数

html - 使用不同的浏览器问题时使用不同的 CSS?

java - 为什么 Markitup BBcode 预览对我不起作用?

java - 无法将值从 EditText 转换为另一个布局

html - 无法让导航栏水平显示

javascript - IE7 默认表单方法是 "GET"。我如何判断它是用户输入的还是默认的?

javascript - 跨多个浏览器一致地获取可用的浏览器窗口大小(clientHeight/clientWidth)