使用Java drawString实现如下Text对齐
Posted
技术标签:
【中文标题】使用Java drawString实现如下Text对齐【英文标题】:Use Java drawString to achieve the following Text alignment 【发布时间】:2020-07-10 08:25:25 【问题描述】:我希望使用 Java2D drawString 来实现以下外观。
但是,我不知道如何实现以下文本对齐方式?
我们可以看到,“Date:”、“Open:”、...都左对齐。
并且 "30-Nov-09", '1262.000", ... 都在右对齐。
alt text http://sites.google.com/site/yanchengcheok/Home/drawstring.png
【问题讨论】:
【参考方案1】:要使文本右对齐,您可以计算出正在渲染的文本的宽度,然后从 x 坐标中减去该宽度。例如:
g.drawString(s, rightEdge - fontMetrics.stringWidth(s), y);
【讨论】:
【参考方案2】:为了加快速度,我详细阐述了劳伦斯的答案:
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);
【讨论】:
【参考方案3】:不特定于drawString
,但一般来说,如果您想打印格式化为固定宽度的字符串集,您可以通过将其中的字段与所需数量的空格连接起来,将每一行简单地生成为字符串。代码看起来像这样:
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;
编辑:正如 Laurence Gonsalves 指出的,这仅适用于固定大小的字体。
【讨论】:
以上是关于使用Java drawString实现如下Text对齐的主要内容,如果未能解决你的问题,请参考以下文章
java语言或j2me的问题!在画布界面用一个drawString怎么实现自动换行?(就是文字很长,大于屏幕的宽时...
Graphics DrawString 画出字体怎么不一样大啊?