使用Java drawString实现以下Text对齐

我希望使用Java2D drawString来实现以下外观。

但是,我有0想法如何实现以下文本对齐?

我们可以看到,“Date:”,“Open:”,……都是左对齐的。

而且“09年11月30日”,“1262.000”,…都正确对齐。

alt text http://sofzh.miximages.com/java/drawstring.png

要右对齐文本,您可以计算出正在渲染的文本的宽度,然后从x坐标中减去该宽度。 例如:

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

为了加快速度,我详细阐述了劳伦斯的回答:

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

不是特定于drawString ,但通常如果要打印格式化为固定宽度的字符串集,您可以通过将其中的字段与其间所需的空格数连接起来,将每行简单地生成为字符串。 代码看起来像这样:

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

编辑:正如Laurence Gonsalves所指出的,这只适用于固定大小的字体。