Массив объектов JTable - PullRequest
       20

Массив объектов JTable

0 голосов
/ 09 ноября 2011
String[] columnNames = {"Type", "Employee ID", "First/Last Name","DOB", "Gender", "HIre Date", "OnCall", "BaseSalary", "Commission/Hourly Rate"};
    Object[][] data = new Object[10][9];
table = new JTable(data,columnNames);

public ArrayList<Person> employeeList = new ArrayList<Person>();
public ArrayList<Client> clientList = new ArrayList<Client>();
public ArrayList<Stock> stockList = new ArrayList<Stock>();

Я пытаюсь создать JTable с информацией внутри массива-списка. Я попробовал что-то вроде.

data[0][0] = "Account";
data[0][1] = 1; //int
data[0][2] = "Name";
data[0][3] = dob; //Date class
data[0][4] = gender; //Enum 
data[0][5] = hire //Date class
data[0][6] = true; //boolean
data[0][7] = 125.23; //double
data[0][8] =  0.015; //double

Что не очень хорошо сработало, я пробую Google, но в большинстве примеров есть готовые массивы, поэтому они мало чем помогли.

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Документация по модели JTable вводит в заблуждение в ее упрощенных объяснениях. Передача данных в конструктор таблицы почти всегда является ошибкой. Вы должны реализовать свою собственную модель таблицы, производную от AbstractTableModel, и передать этот объект модели в конструктор для таблицы.

Тогда ваша табличная модель может иметь личную переменную-член, такую ​​как

public ArrayList<Person> employeeList = new ArrayList<Person>();

тогда вам просто нужно реализовать несколько методов, например

public int getRowCount() {
    return emplyeeList.size();
}

и такие как

public Object getValueAt(int rowIndex, int columnIndex) {
    Person p = employeeList.get(rowIndex);
    switch (columnIndex) {
        case 1: 
              return p.getName();
        ....
    }
}

и т.д.

Это значительно упрощает ваше программирование, так как модель использует ваши естественные структуры данных для хранения данных.

1 голос
/ 09 ноября 2011

Я думаю, что ваша проблема с массивом данных. Массивы в Java не являются динамическими. Определение

Object[][] data = {};

вы создаете массив длиной 0.

Вы должны заранее знать их длину и использовать их при создании или использовать метод List toArray .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...