Eclipse RCP应用程序中的Jfree图表在OpenJDK 14中按比例放大

问题描述

我有一个Eclipse RCP应用程序,其中使用ChartFactory创建了一个XY折线图。该应用程序是使用Oracle JDK 8开发的。在其中,Jfree图表运行良好。现在,当我尝试将应用程序移植到OpenJDK 14时,图表中的所有元素都按1.25缩放。该应用程序的其余部分没有引起任何问题。我试图在Jfreechart论坛中找到解决方案,但无法解决该问题。

我创建的SWT合成内没有显示基本完整的图表。但是,如果我还原应用程序,则会显示完整的图表,并且如果我最大化应用程序,则将保留完整的图表。

如果任何人在移植应用程序时遇到相同的问题,请让我知道修复程序。

预先感谢

解决方法

这是因为 Swing(我假设您使用的是 SWT_AWT)自 Java 9 以来具有连续的规模。

见:https://news.kynosarges.org/2019/03/24/swing-high-dpi-properties/

你可以在 RCP 中用这样的方式同步 Swing 和 SWT 在 ApplicationWorkbenchWindowAdvisor 类启动时的 preWindowOpen() 方法中 适用于 Windows 和 Linux(在 MacOSX 上不需要)。

int deviceZoom = DPIUtil.getDeviceZoom();
double zoom = deviceZoom / 100.0;
System.setProperty("sun.java2d.uiScale",Double.toString(zoom));

当然,您必须针对高 dpi 屏幕相应地检测和编辑它。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...