2013-02-11 52 views
1

我有一個名爲Database的類,它有一個名爲applicants的arrayList。 arrayList申請人中的每條記錄都是申請人詳細信息的數組列表。 (所以Database類包含arrayList的arrayList)。JTable中Array列表的Arraylist

我也有一類名爲GUI其中包含一個JTable:

String[] columnNames = {"Application number", 
           "Program", 
           "Name", 
           "Date", 
           "Accepted?"}; 

Object[][] data = {Database.applicants}; 

每當我編譯它說:

什麼任何指針「非靜態變量申請人不能從靜態上下文中引用」我可能需要這樣做會非常感激。

在此先感謝。

+0

不要使用靜態方法和變量。 – camickr 2013-02-11 16:53:30

+0

我現在在我的GUI類中創建了一個類Database的實例。並改變了Object [] [] data = {database.applicants};它現在說「不兼容的類型」 - 我需要將arrayList轉換爲列表? – Hoggie1790 2013-02-11 17:12:30

回答

0

我需要將arrayList轉換爲List嗎?

您試圖將一個ArrayList分配給一個數組,因此您需要將數據從ArrayList複製到該數組。

或者另一種選擇是創建一個使用ArrayList來保存模型數據的自定義TableModel。請參閱Creating a Table Model上的Swing教程部分。

0

爲了擺脫錯誤

public static List applicants ... 

,但可能不是你想要做什麼。

0

試着考慮Vector's;它們更具動態性,並且可以向它們添加String []或List的行。 試試這個:

public class Database { 

    private static Vector columnsName; 
    private static Vector data; 

    public static Vector getColumnsNames() { 
     if (null == columnsName) { 
      columnsName = new Vector(); 
      columnsName.add("Program Number"); 
      columnsName.add("Program Name"); 
      columnsName.add("Program Date"); 
     } 
     return columnsName; 
    } 

    public static Vector getData() { 
     if (null == data) { 
      populateData(); 
     } 
     return data; 
    } 

    private static void populateData() { 
     data = new Vector(); 
     String[] firstRow = { 
      "22", "Program", "Name", "12/12/2012", "yes" 
     }; 
     data.add(firstRow); 
    } 
} 

然後從GUI,可以準備模型:

 JTable table = new JTable(); 
     table.setModel(new DefaultTableModel(Database.getColumnsNames(), Database.getData()));