Java AWT-在Java8和Java11中,rectangular2d对象的宽度不同

时间:2018-12-31 06:19:50

标签: java java-8 awt java-11

我的一个项目是从Java8迁移到Java11。我有一个TextLayout对象。我正在尝试使用 textLayout.getBounds()获取Rectangle2D对象。

我观察到的一件奇怪的事是,Java11中Rectangle2D对象的宽度与Java8中不同。这怎么可能?

我的代码:

package sample;

import java.awt.*;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.awt.geom.Rectangle2D;

public class Main extends Frame {
    public Main() {
        super("Java 2D Example01");
        setSize(400, 300);
        setVisible(true);
    }


    @Override
    public void paint(Graphics g) {
        FontRenderContext frc = ((Graphics2D) g).getFontRenderContext();
        Font f = new Font("Times", Font.BOLD, 30);

        TextLayout tl = new TextLayout("10x25in-Diagram1", f, frc);
        Rectangle2D rectangleForAllText = tl.getBounds();
        System.out.println(rectangleForAllText);


 //java.awt.geom.Rectangle2D$Float[x=2.375,y=-21.5625,w=250.4375,h=27.875]

//java.awt.geom.Rectangle2D$Float[x=2.375,y=-21.5625,w=253.43736,h=27.875]
    }

    public static void main(String[] args) {

        new Main();

    }
}
  

您将在两个注释中看到:   Java8:    java.awt.geom.Rectangle2D $ Float [x = 2.375,y = -21.5625,w = 250.4375,h = 27.875]

     

Java11中的同一对象:    java.awt.geom.Rectangle2D $ Float [x = 2.375,y = -21.5625,w = 253.43736,h = 27.875]

有人可以告诉我为什么会这样吗?任何修复/建议将不胜感激。

谢谢。

0 个答案:

没有答案