У меня есть вектор с элементами HashMap. Я хочу поместить его в таблицу, и каждое значение HashTable должно находиться в столбце с заголовком столбца HashTable. Таким образом, элементы с ключом «ключ1» должны появиться в столбце таблицы с именем «key1».Добавить/удалить больше столбцов в JTable из пользовательского AbstractTableModel
Проблема: При попытке добавить/удалить столбики таблицы с помощью функции setHash()
. Я передаю String [] с большим количеством элементов, и когда эта функция запускает fireTableStructureChanged()
, java бросает как сумасшедший.
Я не понимаю, где проблема. Не могли бы вы мне помочь?
Реализация таблицы модели здесь:
public class ResizableTableModel extends AbstractTableModel {
protected DataSource src;
protected String[] hash;
//......................
public void setHash(String[] hash) {
this.hash = hash;
fireTableStructureChanged(); // THROWS!
}
public ArrayList getData() { return src.getData(); }
public int getColumnCount() { return hash.length; }
public int getRowCount() { return getData() == null ? 0 : getData().size(); }
public String getColumnName(int col) { return hash[col]; }
public boolean isCellEditable(int row, int col) { return true; }
public Object getValueAt(int row, int col) {
try {
return ((HashMap) getData().get(row)).get(hash[col]);
} catch (Exception e) {
return null;
}
}
public void setValueAt(Object obj, int row, int col) {
try {
//...................
} catch (Exception e) {}
fireTableDataChanged();
}
}
HashMap отсутствует индексация, необходимо использовать List вместо – mKorbel
_I не понимаю, где проблема. И кому-то будет трудно выяснить, где проблема, так как ваш код неполный, и вы не говорите нам, какие исключения вы получаете, и на какой строке это происходит. Рассмотрите возможность публикации [SSCCE] (http://sscce.org) –