2013-02-11 4 views
1

У меня есть класс под названием Database с именем массива, называемым заявителями. Каждая запись в кандидатах на список arrayList является списком элементов списка претендентов. (Таким образом, класс базы данных содержит список массивов списков массивов).Arraylist arraylists in JTable

У меня есть класс с именем GUI, который содержит JTable:

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

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

Всякий раз, когда я скомпилировать его, говорит: «Не статические переменные заявители не могут ссылаться из статического контекста»

Любые указатели на то, что мне, возможно, нужно будет по достоинству оценить.

Заранее спасибо.

+0

Не используйте статические методы и переменные. – camickr

+0

Теперь я создал экземпляр класса Database в моем классе GUI. и изменено Object [] [] data = {database.applicants}; Теперь он говорит «несовместимые типы» - мне нужно было бы преобразовать массивList в список? – Hoggie1790

ответ

0

Должен ли я преобразовать массивList в список?

Вы пытаетесь присвоить ArrayList массиву, поэтому вам нужно будет скопировать данные из массива ArrayList в массив.

Или другой вариант заключается в создании пользовательской TableModel, которая использует ArrayList для хранения данных для модели. См. Раздел из руководства Swing по адресу Creating a Table Model.

0

Чтобы избавиться от ошибки

public static List applicants ... 

Но это не может быть то, что вы хотите сделать.

0

попытаться рассмотреть Vector; они более динамичны, и вы можете добавлять строки 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); 
    } 
} 

затем с помощью графического интерфейса, вы можете подготовить модель:

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