Java Swing 应用程序在高 DPI 屏幕上看起来很小,但它应该缩放到正常大小

标签 java swing highdpi

如何使我的 Java Swing 应用程序 GUI 适合高 DPI 屏幕上的用户?

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

enter image description here

这是应用程序的源代码: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/

相关文章:

intellij-idea - IntelliJ 13.1中的HiDPI,如何使用?到底有什么好处呢?

c# - Windows 10 高 DPI 屏幕上的 WPF 应用程序模糊

java - 我的代码 : my programm seems not stopping 中的无限循环问题

java - 添加 DrawPanel 实例时覆盖整个 GUI 和空指针异常

java - 设置缺少可执行 Jar 图标

java - 如何使用 Canvas 根据用户输入绘制多个矩形?

java - 从另一个类更新 swing 组件

sdl - 如何获取SDL2中的物理显示分辨率?

java - 如何执行具有异步子任务的顺序任务

java - 如何在 Maven 中构建 WAR 项目,在安装到本地存储库并部署到远程存储库时给出自定义名称