在Windows和Linux上运行java awt代码时的结果不同

时间:2012-01-31 09:26:15

标签: java windows linux awt

我有一些代码(不幸的是不是我写的,或者我知道从哪里开始寻找解决方案),它绘制了一些线图。当我在我的Windows机器和Linux机器上运行代码时,我会得到不同的结果:在Linux机器上,图例周围的边框绘制的高度较低,当有超过3个项目时,会出现一些难看的问题。图例

使用

时是否存在一些已知的差异
int getHeight(Graphics2D g, String text) {
    Rectangle2D bounds = g.getFont().getStringBounds(text, g.getFontMetrics().getFontRenderContext());
    return bounds.getHeight();
}

或者问题出在哪里?

视窗:

C:\>java -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

Linux的:

$ java -version
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.10) (6b20-1.9.10-0ubuntu1~10.04.3)
OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode)

更新:

这是一个舍入错误,似乎只发生在linux字体上,而不是windows字体。奇怪。

2 个答案:

答案 0 :(得分:2)

您的方法基于getFontMetrics(),它返回当前字体的字体指标。我假设您在程序中使用默认字体,并且它们在不同的操作系统中有所不同,因此结果高度可能会有所不同。

答案 1 :(得分:1)

您正在使用不同的Java实现,这种情况是可以预期的。我建议你卸载OpenJDK并在Linux中安装Oracle的Java。