如何使我的 Java Swing 应用程序 GUI 适合高 DPI 屏幕上的用户?
请参见下面的屏幕截图。在顶部,您可以看到与 Ubuntu 的文件资源管理器图标和 gedit 相比,该应用程序看起来有多么小。在左下角,您可以大致看到应用程序应该看起来的大小(并且在常规 DPI 显示器上看起来确实如此)。因此,我正在寻找一种在使用高 DPI 显示器时正确缩放应用程序 GUI 的方法。例如,gedit 在常规 DPI 和高 DPI 显示器上看起来都一样。我希望我的应用表现得像这样。
这是应用程序的源代码:https://github.com/baobabKoodaa/baopass
这是一个影响许多应用程序的极其普遍的问题。我在 Ubuntu 上运行的应用程序中,大约有一半可以在用户没有任何操作的情况下正确缩放,另一半没有缩放并且看起来非常小。请注意,我主要是在寻找不需要用户操作的解决方案(尽管此时任何帮助都值得赞赏 - 我还没有找到任何方法来扩展它)。
根据 this缩放应该已经开箱即用。它没有。我不确定这是一个错误,还是除了在 Java 9 上运行应用程序之外我还应该执行其他步骤?
最佳答案
您必须告诉绘图库按比例放大应用。
GDK_SCALE=2 ./application
将在环境中设置适当的信息,并且小部件将按比例渲染,以便每个像素有效占用四个像素的足迹。
请注意,启动画面(如果您使用 Java 的启动画面支持)不会在加载整个 Swing 库后显示,因此无论您尝试进行何种设置,它都不会缩放。
在一些平台上,比如Fedora的Linux发行版,也可以进行部分缩放,这样你就可以设置GDK_SCALE=1.5。请记住,它并非普遍可用,并且无法设置为您可能想要的任何缩放比例。
最后,较旧的 JVM 会完全忽略此设置,因此如果您不使用 Java 9 或更高版本启动,它很可能无法工作。当然,针对较旧的 JVM 和不同的操作系统进行调整的方式往往会有所不同(如果它们能正常工作的话)。
关于Java Swing 应用程序在高 DPI 屏幕上看起来很小,但它应该缩放到正常大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52519777/