2011-03-06 44 views
3

一個對象來填充的JTable我敢肯定,這是可能的,但我無法找到合適的文檔或這種情況下一個簡單的例子。使用每

例如起見,可以說我有一個對象,如這樣的:

public class Person { 
    private final String name; 
    private final int age; 
    private final String address; 

    // Constructor, Getters and Setters 
} 

現在我想能夠做這樣的事情:

myTableModel.addColumn("name"); 
myTableModel.addColumn("age"); 
myTableModel.addColumn("address"); 
myJTable.setModel(myTableModel); 
for (Person person : people) { 
    myTableModel.addRow(person); 
} 

,然後將每個欄會使用該行的Person對象來「獲取」其適當的信息來顯示。

回答

3

創建自定義的TableModel。這裏有一個例子我寫了前段時間:

http://puces-samples.svn.sourceforge.net/viewvc/puces-samples/tags/sessionstate-1.0/sessionstate-suite/sessionstate-sample/src/blogspot/puce/sessionstate/sample/ParticipantTableModel.java?revision=13&view=markup

取而代之的是NbBundle的你也可以使用一個資源包,如果你不是在NetBeans平臺上構建應用程序(雖然我建議使用一個RCP)。

+0

或者,你在找JavaBeans來解決?我曾經這樣做過。你可以看看下面的TableModel我寫的,其中的每行顯示一個屬性爲一個bean,並與我前面提到的樣品結合起來:http://softsmithy.hg.sourceforge.net/hgweb/softsmithy/lib /main-golden/file/5c4db802573b/lib-core/src/main/java/org/softsmithy/lib/swing/table/PropertyTableModel.java – Puce 2011-03-07 00:16:35

+0

你原來的答案是我想要的。謝謝! – digiarnie 2011-03-07 00:31:03

+0

注意:提供的樣本是隻讀的。如果你想使模型可寫/修改:調用AbstractTableModel的基類的根據fireXYZ法每次更改後。否則,表格不會更新。只是覺得這個筆記可能會節省一些時間。 ;-) – Puce 2011-03-07 00:36:17