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