使用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所指出的,这只适用于固定大小的字体。
- 关于空对象引用的(android.support.v4.widget.DrawerLayout $ DrawerListener)’
- Android应用程序在setSupportActionBar崩溃
- removeEventListener不删除firebase中的侦听器
- 将JSONObject转换为JSONArray
- 处理IllegalThreadStateException
- 为什么android studio显示“在constraintlayout中缺少约束”的错误?
- intentservice没有空构造函数,但是有一个构造函数
- Java Android错误“RSA块的数据太多”
- 是否可以将Object本身设置为null?