我在一个简单的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());
答案 0 :(得分:2)
有几种方法可以做你要问的事情:
使用带有HTML的JLabel而不是JTextArea。这可能是最简单的方法。如果您使用< html>启动文本,则可以使用嵌套的堆叠元素并使用CSS来放置文本。它只有HTML 3.2和CSS 几乎 2,但它可能足以调整成本。
如果您真的希望它的外观和行为类似于文本区域,请不要使用JTextArea,请使用一种JEditorPane,例如: HTMLEditorKit和构建HTML以生成您要生成的文本。见#1。
如果您确实想使用JTextArea,可以使用FontMetrics对象来测量字符串的宽度并确定多少空格/等。你需要添加以将成本放在其位置。这里有一个教程:http://docs.oracle.com/javase/tutorial/2d/text/measuringtext.html
HTH,
答案 1 :(得分:0)
我不是摇摆专家,但我认为你可以设置textarea来使用BoxLayout或类似的东西,并将itemObject.getItemName()放在一个单元格中,将itemObject.getItemCost()放在另一个单元格中。