2010-01-30 18 views

回答

15

爲右對齊文本,你可以計算出文本的寬度正在渲染,然後減去寬度x座標如:

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

並非專用drawString,但一般來說,如果你想打印設置格式化成一個固定的寬度,你可以簡單地生成字符串通過連接th將每一行作爲一個字符串在那裏有必要數量的空間。該守則將是這個樣子:

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

編輯:正如勞倫斯·貢薩爾維斯指出,這個工程的唯一固定大小的字體。

+0

這隻適用於固定寬度字體。 – 2010-01-30 23:09:45

6

只是爲了加快速度我闡述勞倫斯回答:

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