我的swing項目出現問題,經過很長時間,我發現我有一個併發問題。儘管如此,我對併發性問題一無所知,我只是試圖學習。 我的項目簡而言之就是一個連接到JTable
的數據庫。當發生諸如輸入,更新和刪除等操作時,它同時影響德比數據庫和JTable
。 我在我的代碼中使用了SwingWorker
和invokeLater
。有時它可以工作,但有些時候它不起作用。 我的代碼如下 注:我執行AbstractTableModel
爲我的JTable
,我建議我應該使用DefualtTableModel
。 下面的代碼是用於刪除部分,我認爲我可以爲其他操作應用相同的功能。 我說得對嗎?我的代碼無法正常工作它有什麼問題? SwingWorker
private void deleteJBActionPerformed(java.awt.event.ActionEvent evt) {
deleteDB = new DeleteDB();
deleteDB.execute();
}
class DeleteDB extends SwingWorker<Void, Void> {
@Override
public Void doInBackground() {
try {
ed.deleteQuery(name1);
} catch (SQLException ex) {
Logger.getLogger(MyFrame.class.getName()).log(Level.SEVERE, null, ex);
System.out.println("deleteing isuse is " + ex);
}
return null;
}
@Override
public void done() {
if (jTable1.getSelectedRow() >= 0) {
tm.removeRow(jTable1.getSelectedRow());
} else {
System.out.println("nothing is selected");
}
name.setText("");
tel.setText("");
ed.printData();
JOptionPane.showMessageDialog(null, "Task completed");
}
}
請親切,並幫助找出我的問題在哪裏。 如果您需要更多信息,請告訴我。
我將代碼更改爲您所說的內容,但它有時可以工作,有時不會。你能告訴我爲什麼嗎? –