2010-01-30 10 views

Respuesta

15

Para el texto de alineación derecha se puede averiguar el ancho del texto estás reproduciendo, y luego restar ese ancho de la coordenada x ejemplo:.

g.drawString(s, rightEdge - fontMetrics.stringWidth(s), y); 
0

no específica a drawString, pero en general, si desea imprimir conjuntos de cadenas formateadas en un ancho fijo simplemente puede generar cada línea como una cadena por concatenación th e campos allí con el número requerido de espacios intermedios. El código sería algo como esto:

String[] makeLines(String[] labels, String[] data, int width){ 
    String[] lines=new String[labels.length]; 
    StringBuilder spaces=new StringBuilder(); 
    for(int i=0;i<width;i++) 
     spaces.append(" "); 

    for (int i=0;i<labels.length;i++){ 
     lines[i]=labels[i]+spaces.substring(0,width-data[i].length()-labels[i].length())+data[i]; 
    } 
    return lines; 
} 

Edit: Como Laurence Gonsalves señaló, esto funciona para fuentes de tamaño fijo solamente.

+0

Esto sólo funciona para fuentes de ancho fijo. –

6

Sólo para acelerarlo elaboré Laurence respuesta:

Graphics2D g2 = (Graphics2D)graphics; 
g2.setFont(new Font("monospaced", Font.PLAIN, 12)); // monospace not necessary 
FontMetrics fontMetrics = g2.getFontMetrics(); 
String s = "Whatever"; 
g2.drawString(s, rightEdge - fontMetrics.stringWidth(s), y); 
Cuestiones relacionadas