Java - 格式化字符串输出以在TextArea中显示

时间:2013-11-02 00:24:57

标签: java string

我在一个简单的java应用程序中有两个字段要显示到textarea我正在编写以学习swing库。

基本上,这个小应用程序有一些我可以单击的按钮,每个按钮的值都存储在ArrayList中。当我按“计算”时,我想输出输出底部的名称,值和数值之和。

例如,ArrayList中的元素1将是名为“ItemOne”且值为12的对象。元素2将是名为“ItemTwoHasALongName”且值为15的对象。

我想将以下内容输出到textarea:

ItemOne                15
ItemTwoHasALongName    12

Total: 27

输出值没有问题,但我无法确保格式正确。这就是我所拥有的:

for (MyItemObjects itemObject : objItemObjects){
    this.billTextArea.append(itemObject.getItemName() + "          " + itemObject.GetItemCost());
    total += itemObject.getmCost();
}

this.textArea.append("Total: $" + Total + "\n");

现在,我知道在上面的示例中我没有填充项目成本。每当我尝试时,我看起来很糟糕的输出是不正确的。

以下是我如何尝试将输出格式化为字符串的示例,然后将字符串附加到文本区域。如何将项目名称左对齐,并根据需要(根据项目名称的长度)将项目成本填充为多个空格,以使成本与每行的列成为一致?

String strLine = String.format("%" + maxLineLength + "s%", itemObject.getItemName() + "          " + itemObject.GetItemCost());

2 个答案:

答案 0 :(得分:2)

有几种方法可以做你要问的事情:

  1. 使用带有HTML的JLabel而不是JTextArea。这可能是最简单的方法。如果您使用< html>启动文本,则可以使用嵌套的堆叠元素并使用CSS来放置文本。它只有HTML 3.2和CSS 几乎 2,但它可能足以调整成本。

  2. 如果您真的希望它的外观和行为类似于文本区域,请不要使用JTextArea,请使用一种JEditorPane,例如: HTMLEditorKit和构建HTML以生成您要生成的文本。见#1。

  3. 如果您确实想使用JTextArea,可以使用FontMetrics对象来测量字符串的宽度并确定多少空格/等。你需要添加以将成本放在其位置。这里有一个教程:http://docs.oracle.com/javase/tutorial/2d/text/measuringtext.html

  4. HTH,

答案 1 :(得分:0)

我不是摇摆专家,但我认为你可以设置textarea来使用BoxLayout或类似的东西,并将itemObject.getItemName()放在一个单元格中,将itemObject.getItemCost()放在另一个单元格中。