Java SWT Browser.在具有超高清 (4K) 或更高分辨率的屏幕上显示不同的输出
2022-09-03 16:05:14
我们在 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尺寸的笔记本电脑上,呈现的内容具有与IE相比字体大小非常小的35px字体的元素(TEST div)。
众所周知,SWT使用底层IE,但我认为IE会进行一些后处理操作来微调内容并根据屏幕属性(分辨率等)修复元素大小,这在从SWT调用时不会完成。
任何解决方案而不修改html内容?
系统属性: 操作系统: 视窗 10 (更新) IE: 11 Java 1.8.161 (32 位) SWT: 4.3