У меня есть JTable с использованием AbstractTableModel. В основном моя программа читает папку и добавляет файлы в папку в таблицу. Я настроил свой массив данных, как так:Добавить исполнителей для прослушивания AbstractTableModel для checkBox
public void buildPluginSheet(){
String[] files= Files.getAvailableFiles();
data.clear();
for(int i=0; i<files.length; i++)
{
Object[] tmp = {files[i], version, new Boolean(isAvailable(files[i]))};
data.add(tmp);
}
}
данные из типа ArrayList < Object [] []>
Если у вас есть логическое значение в таблице он действует как флажок правильно? Мне нужно, чтобы иметь возможность выполнять функцию, когда флажок установлен, а другой - при снятии флажка. Кроме того, я должен иметь возможность передать, какая строка была в этом флажке, поэтому я могу получить имя файла, связанное с этим флажком.
Мой AbstractTableModel выглядит следующим образом:
class MyTableModel extends AbstractTableModel{
private static final long serialVersionUID = 4567658160237952337L;
@Override
public boolean isCellEditable(int row, int col){
if(col == 2){
return true;
}
return false;
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public int getRowCount() {
return data.size();
}
public void setValueAt(Object value, int row, int col) {
data.get(row)[col] = value;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public Class getColumnClass(int column) {
return (getValueAt(0, column).getClass());
}
public String getColumnName(int col) {
return columnNames[col];
}
@Override
public Object getValueAt(int row, int col) {
return data.get(row)[col];
}
}
Это код для создания моей JTable:
filesTable = new JTable(model);
filesTable.setRowSorter(sorter);
filesTable.setPreferredScrollableViewportSize(new Dimension(550, 260));
filesTable.setFillsViewportHeight(true);
filesTable.getTableHeader().setReorderingAllowed(false);
pluginsTable.getModel().addTableModelListener(new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
if(true){
System.out.println("Hello");
}
}
});
Я смотрел на множество различных решений на здесь и в других местах, не Удача .. Я пробовал различные реализации tableChanged и подобных функций. Как это исправить?
Спасибо заранее, ребята!
Посмотрите здесь http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editor – keuleJ
Неверная реализация модели: она должна запускать соответствующее событие при изменении. Кроме того, * не * сделать модель слушателем (к чему, во всяком случае?) – kleopatra