首页 > 解决方案 > Java Swing 应用程序在应该缩放到正常大小时在高 DPI 屏幕上看起来很小

问题描述

如何使我的 Java Swing 应用程序 GUI 在高 DPI 屏幕上正确缩放给用户?

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

在此处输入图像描述

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

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

根据这个缩放应该已经可以开箱即用了。它没有。我不确定这是否是一个错误,或者除了在 Java 9 上运行应用程序之外,我还应该做一些额外的步骤吗?

标签: javaswinghighdpi

解决方案


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

GDK_SCALE=2 ./应用

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

请注意,启动屏幕(如果您使用 Java 的启动屏幕支持)不会在加载整个 Swing 库后出现,因此无论您尝试何种设置,它都不会缩放。

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

最后,较旧的 JVM 完全忽略了这个设置,所以如果你没有使用 Java 9 或更高版本启动,它很可能无法工作。而且,当然,针对旧 JVM 和不同操作系统进行调整的方式往往会有所不同(如果它们可以正常工作的话)。


推荐阅读