Если вам нужно реализовать «Удалить все выбранные» вы можете рассмотреть следующее расширение TableModel, что сэкономит некоторые перерисовки (которые могут дать лучший пользовательский опыт):
import javax.swing.table.DefaultTableModel;
public class RemoveCheckedRowsTableModel extends DefaultTableModel {
public void removeCheckedRows(int removeCheckBoxColumn) {
int beginRow = 0;
int endRow = 0;
RangeSearch: while (beginRow < dataVector.size()) {
while (getValueAt(beginRow, removeCheckBoxColumn).equals(Boolean.FALSE)) {
beginRow++;
endRow++;
if (beginRow >= dataVector.size()) {
break RangeSearch;
}
}
while ((endRow + 1) < dataVector.size()
&& getValueAt((endRow + 1), removeCheckBoxColumn).equals(Boolean.TRUE)) {
endRow++;
}
for (int i = beginRow; i <= endRow; i++) {
dataVector.removeElementAt(beginRow);
}
fireTableRowsDeleted(beginRow, endRow);
endRow = ++beginRow;
}
}
}
Если у вас есть NPE, то либо ваш код ошибочен, либо данные в таблице таблицы плохие. Отправьте свой SSCCE (http://sscce.org), демонстрирующий проблему. – camickr 2010-11-25 15:10:05
есть NPE, только если я использую метод khachik – SOer 2010-11-25 15:12:08