首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Swing HiDPI缩放

Java Swing HiDPI缩放
EN

Stack Overflow用户
提问于 2019-06-16 10:45:09
回答 1查看 561关注 0票数 3

我使用Java 8创建了一个程序,它在Eclipse中使用了Swing GUI。若要将图像和图标缩放到适当的大小,则获取和使用屏幕分辨率。在Eclipse中编译程序时,程序显示得非常好,一切似乎都正常运行。但是,当我将项目导出为"Runnable“并运行该程序时,图像缩放和程序外观都被关闭了。

经过进一步研究,看来运行的jar返回的屏幕分辨率比eclipse中的分辨率低2.5倍(即实际分辨率- 3840x2160 vs 1536x864)。互联网上有间接证据表明,Java8的外观和感觉(或类似的东西)不支持HiDPI屏幕缩放。有一些零散的解决方案声称可以解决这个问题,比如更新到8以后的Java版本,或者通过在jar编译中添加参数(不管这意味着什么)。对于一个Java新手来说,这已经是令人困惑的了,只有当在Eclipse中运行/编译时,这个程序才会被完美的显示而变得更加混乱。

我的问题是,是否有人知道如何使用Swing在HiDPI屏幕上使用Swing编译程序,以及我需要遵循什么过程来编译一个工作程序?

编辑1:有趣的是,在我的Windows设置中,“缩放和布局”、“更改文本、应用程序和其他项目的大小”被设置为精确的250%,这意味着这个设置显然是我遇到的缩放问题的原因。有人知道如何从程序中绕过这个设置吗?或者当我在Eclipse中运行它时,它为什么会工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-13 14:46:39

Java 8不支持高新闻部。在Windows上,它以DPI不知情模式运行,并依赖Windows将窗口位图拉伸到设置中监视器的比例设置。这意味着应用程序的UI在高DPI监视器上显示时看起来很模糊。

Java、Java 11及更高版本的后期版本,支持每个监视器的高DPI设置.您的应用程序的UI是正确的规模,根据设置,文本保持清晰。为了使图标和图像保持清晰,您应该使用MultiResolutionImage或其基本实现BaseMultiResolutionImage来提供更高分辨率的替代方案。

不应基于屏幕分辨率,而应根据监视器设置的比例来确定图像。例如,一个全高清显示器1920×1080与150%的比例,有有效的分辨率1280×720,它是有效的分辨率,Java向您报告。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56618089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档