我希望使用Java2D的drawString來實現以下看起來。使用Java drawString實現以下文本對齊
但是,我有0的想法如何實現以下文本對齊?
正如我們所看到的,「日期:」,「打開:」,...都被對齊到左側。
和「11月30日 - 09」,「1262.000" ......都被排列到右邊。
alt text http://sites.google.com/site/yanchengcheok/Home/drawstring.png
我希望使用Java2D的drawString來實現以下看起來。使用Java drawString實現以下文本對齊
但是,我有0的想法如何實現以下文本對齊?
正如我們所看到的,「日期:」,「打開:」,...都被對齊到左側。
和「11月30日 - 09」,「1262.000" ......都被排列到右邊。
alt text http://sites.google.com/site/yanchengcheok/Home/drawstring.png
爲右對齊文本,你可以計算出文本的寬度正在渲染,然後減去寬度x座標如:
g.drawString(s, rightEdge - fontMetrics.stringWidth(s), y);
並非專用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;
}
編輯:正如勞倫斯·貢薩爾維斯指出,這個工程的唯一固定大小的字體。
只是爲了加快速度我闡述勞倫斯回答:
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);
這隻適用於固定寬度字體。 – 2010-01-30 23:09:45