如果你有一台 DPI 超过 150 的显示器(比如 Macbook Pro),你可能也会发现问题: Java Swing 应用程序上的字体对于高 DPI 显示器来说太小了,而且我根本无法更改字体大小(它直接忽略 Windows DPI,只显示 最原始的 DPI–>96 )。我只能更改屏幕分辨率,这绝对会使 LCD 上的所有内容变得模糊。
是的,我有一台带高 DPI 显示器的笔记本电脑,15.6’,分辨率为 1920x1080,一些 Java 桌面应用程序在我的笔记本电脑上看起来很小,例如 Matlab、Burpsuite 等。我已经在互联网上搜索了很长时间,但是仍然找不到解决问题的方法。我知道我可以通过 JRE_HOME/lib/font/fontconfig.properties.src
更改 JRE 字体,但我找不到任何地方来设置 Java 桌面字体的默认字体大小或 DPI。
问题没有解决办法吗?你有高 DPI 显示器吗?您如何使用此类应用程序? Swing是否放弃高DPI用户?
原文由 Searene 发布,翻译遵循 CC BY-SA 4.0 许可协议
我目前正在 Windows 上调查此问题。这是我发现的:
大多数 Swing Look & Feels 根本不支持高 DPI,甚至 Nimbus 也不支持,尽管它应该是可扩展的。我发现一些旧的博客文章说 Nimbus 最终可能会提供高 DPI 缩放,但显然这从未发生过。
一个例外是系统 LAF,但在所有 DPI 设置下,其默认字体比实际系统字体大小小 10%。此外,必须按照此处所述明确选择系统:http: //docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
您也没有可以在 Swing 中设置的单一比例因子。特定的 LAF 必须提供代码来处理缩放。所以你能做的最好的就是选择系统并希望它足够好。
但是,JavaFX 在我的系统上会正确地自动扩展到 150%。如果可能的话,我建议您使用 JavaFX 来构建您的 GUI。
编辑:我制作了几个小测试程序,并对各种 GUI 框架、Swing 主题和 DPI 设置进行了比较截图。这可能对阅读此问题的人有用:http: //kynosarges.org/GuiDpiScaling.html