如何在Linux中的高dpi显示器上修复基于Java的应用程序的缩放?

2022-09-02 11:04:12

我刚刚切换到java 11(AdaptOpenJDK),以便我的java Swing应用程序在不同系统缩放设置的高dpi显示器上看起来还不错。

它在Windows上工作正常。无论系统上配置的缩放值如何,java 都会自动检测它并使用它来相应地缩放 GUI。

但是,在Linux上,GUI不考虑系统缩放,因此,它在高dpi显示器上看起来很小。

在阅读了这里的一些帖子后,我发现我可以指示java使用什么缩放值。例如,如果系统缩放率为 200%,则可以将以下命令行参数添加到用于启动应用程序的 java 命令中。

-Dsun.java2d.uiScale=2.0

当我添加上面的命令行选项时,GUI在linux上看起来很好。

我还读到我可以设置GDK_SCALE环境变量。

但是,我想找到更好的解决方案。理想情况下,我不需要指定要使用的缩放值。有谁知道这是否可能?

如果上述是不可能的,那么我想我的下一步将是在linux中提出一个命令,返回当前系统缩放值,并使用它来设置选项。sun.java2d.uiScale

任何帮助是值得赞赏的。

谢谢。


答案 1

你可以试试这个:

-Dsun.java2d.ddscale=true

正如官方文件所说:

如果正在使用 DirectDraw/Direct3D 管道,则将此标志设置为 true 将启用硬件加速缩放。默认情况下,DirectDraw/Direct3D 硬件缩放处于禁用状态,以避免在现有应用程序中呈现项目。

有关详细信息,请参阅有关系统属性的官方 Oracle 文档


答案 2

推荐