我刚刚切换到Java 11(AdoptOpenJDK),这样我的Java Swing应用程序在不同系统缩放设置下的高DPI显示器上看起来都不错。
它在Windows上工作正常。无论系统上配置的缩放值是多少,Java都会自动检测到它,并使用它来相应地缩放GUI。
但是,在Linux上,GUI不考虑系统缩放,因此,在高DPI显示器上看起来很小。
在阅读了这里的一些帖子后,我发现我可以指示Java使用什么缩放值。例如,如果系统缩放为200%,那么我可以将以下命令行参数添加到用于启动应用程序的java命令中。sun.java2d.uiScale
当我添加上面的命令行选项时,GUI在Linux上看起来很好。
我还阅读了我可以设置GDK_SCALE环境变量。
然而,我想找到一个更好的解决方案。理想情况下,一个我不需要指定缩放值来使用。有人知道这是否可能吗?
如果上面的方法不可行,那么我想我的下一步将是在Linux中提出一个命令,该命令返回当前的系统缩放值,并使用它来设置sun.java2d.uiScale
选项。
2条答案
按热度按时间7uhlpewt1#
除了一组为所有gui组件预先做好的缩放和数学缩放之外,你可以使用borderlayout来调整组件的大小,使用gridbaglayout来定位组件,然后只有字体和图像需要数学缩放。
图形设备与图形环境类Re:图形配置. getBounds()
ltskdhd12#
你可以试试这个:
正如官方文件所说:
如果DirectDraw/Direct 3D管道正在使用中,则将此标志设置为true将启用硬件加速缩放。默认情况下禁用DirectDraw/Direct 3D硬件缩放,以避免在现有应用程序中呈现伪像。
要了解更多信息,您可以查看官方的Oracle documentation about system properties。