Можете ли вы помочь мне сделать этот фрагмент кода работоспособным? Я создал таблицу, которая меняет свои данные каждый раз, когда запускается функция. Код состоит из трех классов.
Настольная модель
public class MyTableModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
private static String[] header = {"A", "B","C", "so on"};
public MyTableModel(){
}
RecordingList data = new RecordingList();
public void addData(RecordingList dataIn) {
data=dataIn;
this.fireTableDataChanged();
}
@Override
public int getColumnCount() {
return header.length; //length;
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public String getColumnName(int col) {
return header[col];
}
@Override
public String getValueAt(int row, int col)
{
Object[] rowSelected = data.getRecordingRow(row);
return rowSelected[col].toString();
}
}
JTable
public class DynamicTable extends JTable implements TableModelListener{
/**
*
*/
MyTableModel model;
private static final long serialVersionUID = 1L;
public DynamicTable() {
model = new MyTableModel();
initialize();
}
void initialize(){
setFillsViewportHeight(true);
setModel(model);
getModel().addTableModelListener(this);
setForeground(Color.BLACK);
setShowGrid(true);
setShowVerticalLines(true);
setBackground(Color.WHITE);
try {
// 1.6+
setAutoCreateRowSorter(true);
} catch(Exception continuewithNoSort) {
}
}
public void tableChanged(TableModelEvent e) {
TableModel newModel = (TableModel)e.getSource();
model=(MyTableModel)newModel;
setModel(model);
// Do something with the data...
}
}
Наконец, я реализовал третий класс, которому необходимо обновить таблицу и модель.
Это, очевидно, действительно НЕПРАВИЛЬНЫЙ подход, и я поместил его здесь, чтобы дать вам понимание того, чего я пытаюсь достичь:
RecordingList recordingList = cr.getResultQuery();
MyTableModel newModel = new MyTableModel();
newModel.addData(recordingList);
TableModelEvent event= new TableModelEvent(newModel);
DynamicTable dt =new DynamicTable() ;
dt.tableChanged(event);