2014-09-27 110 views
1

我想創建一個與JList一起使用的字符串數組,我有一個包含作者姓名,Tittle等等的Book類中的對象數組......但是當我使用string.format併發送它給我的JList文本不會像我使用system.out.format時一樣對齊。Java字符串格式

代碼:

final static String FORMAT = "|%1$-25s|%2$-25s|$%3$-10.2f|%4$-15s|%5$-13s|\n"; 

static String[] createStringList(Book[] dataBase) 
{ 
    String[] list = new String[dataBase.length]; 

    for (int i = 0; i < dataBase.length; i++) 
    { 
     list[i] = String.format(FORMAT, dataBase[i].getTittle(), dataBase[i].getAuthor(), 
             dataBase[i].getBookPrice(), dataBase[i].getNumberInStock(), 
             dataBase[i].getISBNNumber()); 
    } 
    return list; 
} 

static void printout(Book[] dataBase) 
{ 
    System.out.println("   Tittle" + "\t" + "     Author" + "\t" + "  Price" + "\t" + "Number In Stock" + "\t" + " ISBN Number"); 
    System.out.println("_____________________________________________________________________________________________"); 
    for (int i = 0; i < dataBase.length; i++) 
    { 
      System.out.format(FORMAT, dataBase[i].getTittle(), dataBase[i].getAuthor(), 
             dataBase[i].getBookPrice(), dataBase[i].getNumberInStock(), 
             dataBase[i].getISBNNumber()); 
    } 
} 

結果截圖: enter image description here

正如你所看到的,打印方法對準它很好,但是當我嘗試把它發送到我的JList它弄亂了,即使我使用相同的代碼。我將如何去調整它?我嘗試使用String格式的值=「|%1 $ -25s |%2 $ -25s | $%3 $ -10.2f |%4 $ -15s |%5 $ -13s | \ n」;但它似乎沒有幫助。

+1

你最好使用每列獨立的JList,並通過Swing繪製線條,並嘗試排列文本。相信我,這會讓你頭痛!創建一個基本List面板,並通過重載的構造函數填充數據來產生倍數。 – Petro 2014-09-27 23:34:49

+0

我不能那樣做,稍後我會添加一種編輯條目的方式,我希望用戶能夠直接從JList中選擇要編輯的條目。 – user2457344 2014-09-27 23:36:31

+0

我們可以隨時將列表引用爲對象,並通過對象進行更改 – Petro 2014-09-27 23:37:38

回答

0

你在JList中搞砸了對齊的原因是因爲它使用(希望)比例字體。你可以使用一個等寬的,但這將是醜陋的。您需要使用JList中的列(即表格控件)。

+0

使用等寬字體有效,它看起來不太好,但仍能完成工作。 – user2457344 2014-09-27 23:47:51