首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Windows/Linux上设置Java Swing应用的DPI?

如何在Windows/Linux上设置Java Swing应用的DPI?
EN

Stack Overflow用户
提问于 2013-03-27 20:41:40
回答 6查看 56.1K关注 0票数 75

如果你有一个显示器的DPI值超过150 (如Macbook Pro ),你可能也会发现这个问题:对于高DPI值的显示器,Java Swing应用程序上的字体太小了,而且我根本不能改变字体大小(它直接忽略了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用户吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-05-08 16:13:38

我目前正在调查Windows上的这个问题。这是我发现的:

大多数Swing外观和感觉根本不支持高DPI,甚至连Nimbus都不支持,尽管它应该是可伸缩的。我发现一些旧的博客文章说Nimbus可能最终会提供高DPI伸缩性,但显然这从未发生过。

一个例外是系统LAF,但在所有DPI设置中,其默认字体比实际系统字体小约10%。此外,必须按照此处所述显式选择系统:http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html

在Swing中也没有可以设置的单一比例因子。特定的LAF必须提供代码来处理缩放。所以你能做的最好的就是选择系统,并希望它足够好。

然而,在我的系统上,JavaFX确实可以正确地自动扩展到150%。如果可能的话,我建议你使用JavaFX来构建你的图形用户界面。

编辑:我制作了几个小的测试程序,并对各种GUI框架、Swing主题和DPI设置进行了比较截图。这可能会为阅读这个问题的人提供信息:http://kynosarges.org/GuiDpiScaling.html

票数 39
EN

Stack Overflow用户

发布于 2017-08-01 07:58:48

简而言之:您需要在JRE 9+上运行它。

长长的答案:

这是因为Java运行时声明自己是“DPI感知的”,但并不真正支持AWT和Swing。Java应用程序的大小和渲染基于像素,而不是适当缩放,这包括HiDPI显示。不管怎么说,这个问题最近已经解决了。请参阅问题JEP 263: HiDPI Graphics on Windows and Linuxupgrade

因此,增加字体大小不起作用(因为它不会增加其他内容);jvm参数-Dsun.java2d.dpiaware=false不起作用(因为它实际上并不受支持);清单文件+注册表编辑(对于Windows)也不起作用。

解决方案:您需要在JRE 9+上运行它,因为它确实支持此功能。

票数 11
EN

Stack Overflow用户

发布于 2020-08-05 19:22:59

这款answer解决了我在4K屏幕的Ubuntu笔记本上的问题。

在应用程序的配置文件中,我添加了-Dsun.java2d.uiScale=2.5 Java参数,现在,在执行时,应用程序具有良好的伸缩性,并且可以使用。

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

https://stackoverflow.com/questions/15659044

复制
相关文章

相似问题

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