2013-11-02 125 views
0

我有2個字段顯示在一個簡單的Java應用程序中的textarea我正在寫東西來學習swing庫。Java - 格式化字符串輸出以顯示在TextArea中

基本上,這個小應用程序有幾個按鈕,我可以點擊和每個按鈕的值存儲在一個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()); 

回答

2

有幾個方法可以做到你的要求:

  1. 使用一個JLabel與HTML而不是一個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

HTH,

0

我不是搖擺的專家,但我認爲你可以設置textarea的使用BoxLayout的或相似的,並將itemObject.getItemName()在一個小區,itemObject.getItemCost()在另一個。

+0

我其實是試圖在文本區域設置列,但無法弄清楚如何輸出到第1列和第2列。即使Google上搜尋它。 – user797963