私はスイングライブラリを学ぶために書いている単純なJavaアプリケーションのテキストエリアに表示する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());