Java 如果使用SwingWorker加载数据,何时将TabelModel绑定到JTable?

Java 如果使用SwingWorker加载数据,何时将TabelModel绑定到JTable?,java,swing,jdbc,jtable,swingworker,Java,Swing,Jdbc,Jtable,Swingworker,我正在使用SwingWorker通过自定义表格模型将数据库中的数据加载到我的JTable中,方法如下:。如果我在SwingWorker中继续处理结果集之前绑定了我的TableModel,那么最终在table模型中会出现一个空列表,JTable会抱怨。如果我在调用SwingWorker之后绑定了模型,我的JTable会错过一些回调,这些回调是由publish方法触发的,用于更新表中的行。下面是我的代码的样子: class MyTableModel{ ResultSet rs; //Row is

我正在使用SwingWorker通过自定义表格模型将数据库中的数据加载到我的JTable中,方法如下:。如果我在SwingWorker中继续处理结果集之前绑定了我的TableModel,那么最终在table模型中会出现一个空列表,JTable会抱怨。如果我在调用SwingWorker之后绑定了模型,我的JTable会错过一些回调,这些回调是由
publish
方法触发的,用于更新表中的行。下面是我的代码的样子:

class MyTableModel{
 ResultSet rs;
 //Row is an intenral row object that is obtained after processing resultset  
 List<Row> data

 MyTableModel(){
 //initalise the row, rs etc;
 } 

 public void updateData(List<Row> r){
    data.addAll(r);
 }

 //called as a callback by another class that manages the queries
 public void processResults(ResultSet rs){
   new SwingWorker<Void,Row>(){
    doInBackground(){
     //process row by row
     publish(row);
    }
    public void process(List<Row> chunks){
       updateData(chunks);
       fireTableDataChanged();
    }
   }.execute();
 }

}
首先,我(个人)不会为此使用
fireTableDataChanged()
方法,它将要求
JTable
完全重新绘制自身(包括列)。随着数据集的增长,这将大大增加重新绘制的时间

public void updateData(List<Row> r){
    int firstRow = getRowCount();
    data.addAll(r);
    int lastRow = getRowCount() - 1;

    fireTableRowsInserted(firstRow, lastRow);

}
public void updateData(列表r){
int firstRow=getRowCount();
data.addAll(r);
int lastRow=getRowCount()-1;
fireTableRowsInserted(第一排,最后一排);
}

“和JTable投诉”。。。关于什么?嗯,它无法从支持模型的列表中获取任何值,因为列表到目前为止是空的。
public void updateData(List<Row> r){
    int firstRow = getRowCount();
    data.addAll(r);
    int lastRow = getRowCount() - 1;

    fireTableRowsInserted(firstRow, lastRow);

}