Инициализировать таблицу с массивом объектов - PullRequest
0 голосов
/ 11 августа 2011

У меня проблема с инициализацией JTable из FOR с BD или массивом.

Моя проблема - это пример tableFilterDemo.java, мне нужна функциональность этого, но когда я хочу загрузить данные моегоBD или arraylist У меня проблема.

Мне нужно загрузить массив объектов с FOR, чтобы получить все строки файла или строки таблицы

private Object[][] data = {
    { "Mary", "Campione", "Snowboarding"},
    { "John", "guifru", "skyiin"},};

Ответы [ 3 ]

4 голосов
/ 11 августа 2011

Вы всегда можете использовать DefaultTableModel, которая использует Вектор Векторов для хранения данных в TableModel.Таким образом, для каждой строки в таблице вы создаете вектор и добавляете каждый столбец в Vecter.Затем вы добавляете строку Vector ко второму вектору.Таким образом, вам не нужно заранее жестко задавать размер массивов. Таблица из базы данных показывает, как вы можете использовать этот подход.

Или вы всегда можете использовать пользовательскую TableModel, если вы хотите отобразить пользовательские объекты, которые хранятся в ArrayList. Модель таблицы строк обеспечивает некоторую общую поддержку для хранения объектов в ArrayList.Вы также хотели бы взглянуть на BeanTableModel для полной реализации и еще одного примера того, как сделать пользовательскую реализацию.

2 голосов
/ 11 августа 2011

У вас есть два способа:

  • Вы устанавливаете объекты прямо на JTable, вызывая правильный конструктор (который JTable(Object[][] rowData, Object[] columnNames)), и это довольно просто и хорошо, но просто управляет статическими таблицами
  • вы используете модель, как в примере, о котором вы говорите: вы используете класс, который расширяет AbstractTableModel, в котором вы переопределяете правильные методы для сопоставления двумерной коллекции с правильным поведением.
1 голос
/ 11 августа 2011

Я не уверен, что понял вашу проблему.В любом случае, если ваша таблица имеет 3 столбца, и вы определили модель таблицы как определенную здесь , вы должны разметить свой массив и поместить значения в таблицу следующим образом:

for(int i=0; i < data.length; i++){
  for(int j=0; j < data[i].length; j++){
    table.setValueAt(data[i][j], i, j);
  }
}

Это объявление метода: setValueAt (Object aValue, int row, int column)

Если вы хотите преобразовать arrayList в массив, вы можете:

ArrayList<String> arrayList;
String[] data = new String[arrayList.size()];
data = arrayList.toArray(data);

Bye Luca

...