windows-7 - 迁移到 AdoptOpenJDK 11 后 Windows 7 中的像素化 Java GUI
问题描述
我正在将 java 应用程序从 java 8 (Oracle) 迁移到 java 11 (AdaptOpenJDK)。使用 java 8 的版本曾经在具有高 dpi 显示器的 Windows 10 上存在布局问题。一旦我使用 java 11 构建,问题就消失了,并且 GUI 在 Windows 10 中看起来很好。但是,我发现使用 java 11 的新构建在 Windows 7 上看起来不正常,GUI 图像和文本出现像素化。
概括:
- 带有 java 8 的 GUI 在 Win 7 上很好,但在 Win 10 中看起来不行
- 带有 java 11 的 GUI 在 Win 10 上很好,但在 Win 7 中看起来不太好
我正在使用 3840x2160 的 4k 显示器,缩放比例为 125%。
我发现如果我使用 java 8 JRE(来自 AdoptOpenJDK)来运行应用程序,那么 Windows 7 中的问题就会消失。似乎问题是由 java 11 进行 125% 的缩放引起的,因为我发现 GUI 大约大了 25%。
使用 java 11 时,我想在 Windows 7 中找到解决方案。我想知道是否有任何我可以使用的 javaw 参数或我可以更改的任何系统设置。
任何帮助表示赞赏。
谢谢。
更新
附上java版本和windows上所有组合的截图。
- java8 win 7.jpg:看起来不错(没有缩放),只有文本和图像小,无论系统上的缩放配置如何
- java8 win 10.png:缩放不适用于图标 - 杂乱的 JTree
- java11 win 10.png:看起来不错 - 适当的缩放
- java11 win 7.jpg:应用了缩放,但它显示问题 - 图标和文本出现像素化
解决方案
这实际上不是一个解决方案,但我想分享一些我认为经过一些研究后正在发生的事情。
这篇Microsoft 文章介绍了 DPI 感知模式以及每个 Windows 版本中的模式。8.1 之前的所有 Windows 版本的行为将始终应用位图拉伸,这会导致 UI 模糊。Java 8 中不会发生拉伸,因为它不支持 dpi,但它在高缩放百分比(混乱、大文本和小图像/图标)上存在更严重的问题。拉伸发生在 java 11 中,因为它支持 dpi,但是由于 Windows 7 中实现的拉伸行为,它存在模糊问题。
解决方案
推荐阅读
- adsense - Kaspersky Anti-Banner System is blocking AdSense in my website
- python - Error in Sckit learn code: " digits: Bunch Instance of 'tuple' has no 'target' memberpylint(no-member) " .How to fix?
- dart - 如何在不同持续时间的颤动中生成定时器?
- android - Flutter - Text not visible inside FlatButton with FittedBox
- android - Unable to handle volley response as JsonObject
- python - How to get a selection part in a crawler result
- nginx - Nginx Validation failed due to conflict server name
- reactjs - 在反应中更新三元运算符内的状态
- oauth-2.0 - 如何使用 Oauth2 将 Google Classroom 连接到 Bubble.io?
- android - 如何将 Uint8List 呈现为 pdf?