2016-05-17 9 views
0

Hallo Ich baue eine Replik des Spiels 2048 das Spiel funktioniert, aber ich habe Schwierigkeiten, meine Zahlen in der Mitte der Fliesen zu halten. Im Grunde ist alles in Ordnung für Zahlen, die unter 32 sind, aber je mehr sie steigen, desto mehr verschieben sie sich nach unten links.Probleme beim Zentrieren von Text auf einem Graphics2D-Element

Zuerst ist die Eingabe, die ich verwende und als die Klasse. Während das g das Graphics2D-Element ist, das die Kachel darstellt.

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(); 
} 

}

+0

Interessant ist auch https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingUtilities.html, d. H. Berechnen der Grenzen eines JLabel. BTW _Was ist dein genaues Problem? _ –

Antwort

1

Ihre height() Methode gibt die Breite der Saiten Grenzen, und die textwidth() Methode gibt die Höhe der Saiten Grenzen. Ist das nicht falsch herum?

Verwandte Themen