我正在使用SwingWorker通過自定義TableModel將數據從數據庫加載到我的JTable中,使用此處建議的方法:How to fill data in a JTable with database?。如果在繼續處理SwingWorker中的ResultSet之前綁定我的TableModel,那麼最終會在表模型中出現一個空List,JTable會抱怨。如果我在調用SwingWorker後綁定了模型,則我的JTable會錯過publish
方法觸發的一些回調來更新表中的行。這裏是我的代碼如下所示:如果使用SwingWorker加載數據,何時將TabelModel綁定到JTable?
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();
}
}
這是我怎麼設置我的表模型現在
MyTableModel m = new MyTableModel();
//pass m as callback to the database manager which invokes processResults() on m
dbm.makeQuery("SELECT bit,pat from bot;",m);
table.setModel(m);
「和JTable抱怨」...關於什麼? – MadProgrammer
以及它是無法從列表中支持模型bacuse列表中的任何值列表是空的截至目前爲止。 – adi