gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:35:10 25 4
gpt4 key购买 nike

我正在编写一个简单的 java 应用程序来学习 swing 库,有 2 个字段要显示到文本区域。

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

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

我想将以下内容输出到文本区域:

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());

最佳答案

有几种方法可以满足您的要求:

  1. 使用带有 HTML 的 JLabel 而不是 JTextArea。这可能是最简单的方法。如果您的文本以 开头,则可以使用带有嵌套 的堆叠

    元素,并使用 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

HTH,

关于Java - 格式化字符串输出以显示在 TextArea 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19737547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com