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