我们在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相比,字体大小非常小。
我们知道SWT使用底层IE,但我认为IE会根据屏幕属性(分辨率等)进行一些后期处理操作来微调内容并修复元素大小,这在从SWT调用时无法完成。
没有修改html内容的任何解决方案?
系统属性: 操作系统:Windows 10(已更新) IE:11 Java 1.8.161(32位) SWT:4.3
答案 0 :(得分:2)
Java 9中似乎有一些important fixes to high-DPI display(参见also here)。如果您的用户社区可以继续前进,那么这可能是最简单的解决方法。
答案 1 :(得分:1)
这可能需要更新版本的SWT,我建议您选择最新版本。请注意,Photon Eclipse 4.8即将发布,因此当前的RC版本也应该非常好。 关于Windows上的HDPI w / Eclipse,还有一个相关的论坛帖子here。