Java Swing应用程序在高DPI屏幕上看起来很小,当它应该扩展到正常大小时

2022-09-03 08:02:58

如何使我的 Java Swing 应用 GUI 正确扩展到高 DPI 屏幕上的用户?

请参阅下面的屏幕截图。在顶部,您可以看到与Ubuntu的文件资源管理器图标和gedit相比,该应用程序看起来有多小。在左下角,您可以大致看到应用程序应该是什么样子(并且在常规DPI显示器上可以看到)。因此,我正在寻找一种方法,以便在使用高 DPI 监视器时正确缩放应用的 GUI。例如,gedit 在常规 DPI 和高 DPI 监视器上看起来是一样的。我希望我的应用像这样运行。

enter image description here

以下是该应用程序的源代码:https://github.com/baobabKoodaa/baopass

这是影响许多应用程序的极其常见的问题。我在Ubuntu上运行的应用程序中,大约有一半是在没有用户任何操作的情况下正确扩展的,另一半没有缩放,看起来非常小。请注意,我主要在寻找一种不需要用户操作的解决方案(尽管在这一点上感谢任何帮助 - 我根本没有找到任何方法来扩展它)。

根据这种缩放应该已经开箱即用。事实并非如此。我不确定这是否是一个错误,或者除了在Java 9上运行应用程序之外,我是否应该做一些额外的步骤?


答案 1

您必须告诉绘图库放大应用程序。

GDK_SCALE=2 ./应用程序

将在环境中设置适当的信息,并且小部件将按比例渲染,以便每个像素有效地占用四个像素的占用空间。

请注意,初始屏幕(如果您使用 Java 的初始屏幕支持)在加载整个 Swing 库后不会显示,因此无论您尝试何种设置,它都不会扩展。

在某些平台中,例如Fedora的Linux发行版,也可以进行部分扩展,以便您可以设置GDK_SCALE = 1.5。请记住,它不是普遍可用的,并且它不能设置为您可能需要的任何缩放比例。

最后,较旧的JVM完全忽略此设置,因此,如果您没有使用Java 9或更高版本启动,则它很可能不起作用。当然,针对较旧的JVM和不同操作系统进行调整的方式往往会有所不同(如果它们工作的话)。


答案 2

看起来你正在使用Linux。您可以使用命令行开关

java -Dsun.java2d.uiScale=2 -jar some_application.jar

https://wiki.archlinux.org/index.php/HiDPI#Java_applications


推荐