无法将文本置于 Graphics2D 元素的中心

Having trouble to center text on a Graphics2D element

您好,我正在构建 2048 游戏的复制品,该游戏运行正常,但我无法将我的数字保持在图块中间。对于 32 以下的数字,基本上一切都是有序的,但它们越往上移,就越向左下角移动。

首先是我使用的输入,然后是 class。而 g 是表示图块的 Graphics2D 元素。

int getX= WIDTH/2- Text.textWidth(""+value, font, g)/2;
int getY= HEIGHT/2+ Text.textHeight(""+value, font, g)/2;
g.drawString(""+value, getX, getY);

public class Text {
private Text(){
}

public static int textHeight(String out, Font font, Graphics2D g){
    g.setFont(font);
    Rectangle2D bounds=g.getFontMetrics().getStringBounds(out, g);
    return (int)bounds.getWidth();
}
public static int textWidth(String out,Font font, Graphics2D g){
    g.setFont(font);
    if(out.length()==0)
        return 0;
    TextLayout tl=new TextLayout(out,font,g.getFontRenderContext());
    return (int)tl.getBounds().getHeight();
}

}

您的 textHeight() 方法 returns 字符串边界的 width,以及 textWidth() 方法 returns height 的字符串范围。是不是走错路了?