Повторные значения при вставке строк в JTable - PullRequest
2 голосов
/ 28 апреля 2009

У меня проблемы с вставкой строк в JTable, и я не знаю, в чем проблема.

Я так и делаю:

((DefaultTableModel)myJTable.getModel()).insertRow(0,webSiteDownloader.getWebSites().toArray());

webSiteDownloader - это один объект, который имеет ArrayList. Я могу получить этот массив, вызывая метод getWebSites.

Проблема в том, что когда я вставляю одну строку, добавляя вторую, JTable показывает только первую, но повторяется дважды Я был достаточно ясен?

Thks: D

1 Ответ

3 голосов
/ 28 апреля 2009

Я сделаю снимок в темноте и угадаю, что вы хотите сделать что-то вроде этого:

DefaultTableModel dtm = (DefaultTableModel)myJTable.getModel();
for (MyRowObject row : webSiteDownloader.getWebSites()) {
  dtm.insertRow(0, row.toArray());
}

Есть ли особая причина, по которой вы используете insertRow вместо addRow?

Кроме того, я бы очень хотел порекомендовать вам развернуть собственную табличную модель специального назначения путем расширения AbstractTableModel. Основной непроверенный пример:

public class MyTableModel extends AbstractTableModel
{
  protected List<MyObject> rows;

  public MyTableModel()
  {
    rows = new ArrayList<MyObject>();
  }

  public void add(MyObject obj)
  {
    rows.add(obj);
  }

  @Override
  public int getRowCount()
  {
    return rows.size();
  }

  @Override
  public int getColumnCount()
  {
    // This value will be constant, but generally you'd also
    // want to override getColumnName to return column names
    // from an array, and in that case you can return the length
    // of the array with column names instead
    return 2;
  }

  @Override
  public Object getValueAt(int row, int column)
  {
    MyObject obj = rows.get(row);

    // Change this to match your columns
    switch(column) {
      case 0: return obj.getId();
      case 1: return obj.getName();
    }

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