내 스윙 프로젝트에 문제가 있습니다. 오랜 시간이 지난 후에 동시성 문제가 있음을 발견했습니다. 그럼에도 불구하고 나는 동시성 문제에 대해 알지 못하며, 나는 단지 배우려고 노력한다. 내 프로젝트 요약집은 JTable
에 연결된 데이터베이스입니다. 입력, 갱신 W h 제와 같은 일부 조작이 _ 생할 때, 더이 s의 데이터베이스와 JTable
에 동시에 영향을줍니다. 코드에 SwingWorker
과 invokeLater
을 사용합니다. 때로는 효과가 있지만 다른 때는 작동하지 않습니다. 내 코드는 다음과 같습니다. 참고 : 을 사용해야한다고 조언하는 JTable
에 대해서는 AbstractTableModel
을 구현합니다. 다음 코드는 부품을 삭제하기위한 코드이며 다른 작업에도 동일한 기능을 적용 할 수 있다고 생각합니다. 맞나요?내 코드가 제대로 작동하지 않습니다. 무엇이 잘못 되었나요? 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");
}
}
내 문제가 어디에 있는지 찾아 내십시오. 나에게 더 많은 정보가 필요하면 알려 주시기 바랍니다.
내가 말한대로 코드를 변경했지만 때로는 효과가 있고 때때로 그렇지 않습니다. 왠지 말해줘? –