텍스트를 그릴 때 일반적으로 텍스트를 경계 사각형에 가운데 맞춤해야합니다.
/**
* This method centers a <code>String</code> in
* a bounding <code>Rectangle</code>.
* @param g - The <code>Graphics</code> instance.
* @param r - The bounding <code>Rectangle</code>.
* @param s - The <code>String</code> to center in the
* bounding rectangle.
* @param font - The display font of the <code>String</code>
*
* @see java.awt.Graphics
* @see java.awt.Rectangle
* @see java.lang.String
*/
public void centerString(Graphics g, Rectangle r, String s,
Font font) {
FontRenderContext frc =
new FontRenderContext(null, true, true);
Rectangle2D r2D = font.getStringBounds(s, frc);
int rWidth = (int) Math.round(r2D.getWidth());
int rHeight = (int) Math.round(r2D.getHeight());
int rX = (int) Math.round(r2D.getX());
int rY = (int) Math.round(r2D.getY());
int a = (r.width/2) - (rWidth/2) - rX;
int b = (r.height/2) - (rHeight/2) - rY;
g.setFont(font);
g.drawString(s, r.x + a, r.y + b);
}
이의 중복 것 같은데 : : http://stackoverflow.com/questions/258486/calculate-the-display-width-of-a-
는내가 사용하는 코드는 다음과 같이 보입니다 string-in-java – mwarren
이것은 Swing이 당신을 위해 일하는 것입니다. 이 답변을보십시오 : http://stackoverflow.com/questions/23729944/java-how-to-visually-center-a-specific-string-not-just-a-font-in-a-rectangle 게임을 작성하기 시작한 JavaFX는 Java 플랫폼에 포함 된 가장 최신 그래픽 툴킷이며 Swing보다 더 나은 선택 일 수 있습니다. – richj
@mwarren 부분적으로는 복제본이지만 한 가지만 있습니다. 'FontMetrics.getHeight()/2'가 텍스트의 "진짜"높이의 절반을주지 않기 때문에 텍스트의 높이를 어떻게 얻을 수 있는지 궁금합니다. @richj , 그래서 나는 JavaFX로 전환하지 않을 것이라고 생각한다. 그것은 다른 게임을위한 것입니다. –