我的一个项目是从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]
有人可以告诉我为什么会这样吗?任何修复/建议将不胜感激。
谢谢。