使用Java将逗号对齐打印到打印机设备

时间:2013-02-12 13:57:59

标签: java printing alignment

对于项目,我需要将一些数字打印到打印机。它们需要在彼此下面打印,在逗号上对齐。字体不是也不能是等宽字体。我正在使用DecimalFormat(“0.000”)将所有数字转换为以正好3位小数结尾的字符串。

将逗号上的数字对齐的正确方法是什么?我正在使用Java的Printable接口,如http://docs.oracle.com/javase/tutorial/2d/printing/index.html所述。

由于

编辑:我不是要打印到控制台,而是打印到打印机(实际纸张出来的实际硬件)

2 个答案:

答案 0 :(得分:1)

使用等宽字体肯定会更好看。

我假设逗号是小数点。这就是我要做的事。

  • 使用drawString生成逗号图像。

  • 将数字分成两部分,小数点前的数字和小数点后的数字。

  • 使用drawString生成小数点前的数字图像和小数点后的数字。

  • 将所有数字转换为图像后,请仔细检查小数点后的数字,看看哪个数字的宽度最长。

  • 现在,您可以获得小数点后最长数字和逗号的宽度像素数。

  • 再次浏览数字图像,按照以下顺序在打印机画布上绘制图像。

    • 小数后面的数字
    • 逗号
    • 小数点前的数字

答案 1 :(得分:0)

只需将它们转换为对齐的字符串,然后打印这些字符串:

public static String align (String str)
{
    int n = str.indexOf('.');

    StringBuilder sb = new StringBuilder ();
    for (int i = n; i < 3; i++)
        sb.append ((char)0x2007); // Append FIGURE-SPACE character
    sb.append (str);
    return sb.toString ();
}

public static void main(String[] args) {
    Random r = new Random ();
    DecimalFormat format = new DecimalFormat("0.000");

    for (int i = 0; i < 10; i++)
    {
        String str = format.format(Math.pow (r.nextDouble(), 3.0) * 150.0); 
        System.out.println(align (str));
    }
}