선택한 행을 삭제할 때 jTable의 데이터를 새로 고칩니다. 여기에 테이블을 설정하는 내 코드입니다 :jTable에서 선택한 행을 삭제하면 기존 게시물이 계속 추가됩니다.
private JTable getJTableManageReplies() {
jTableManageReplies.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jTableManageReplies.getSelectionModel().addListSelectionListener(
new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
int viewRow = jTableManageReplies.getSelectedRow();
// Get the first column data of the selectedrow
int replyID = Integer.parseInt(jTableManageReplies.getValueAt(
viewRow, 0).toString());
eForumRepliesAdmin reply = new eForumRepliesAdmin(replyID);
replyID = JOptionPane.showConfirmDialog(null, "Are you sure that you want to delete the selected reply? " , "Delete replies", JOptionPane.YES_NO_OPTION);
if(replyID == JOptionPane.YES_OPTION){
reply.deleteReply();
JOptionPane.showMessageDialog(null, "Reply has been deleted successfully.");
SetUpJTableManageReplies();
}
}
}
});
return jTableManageReplies;
}
public void SetUpJTableManageReplies() {
DefaultTableModel tableModel = (DefaultTableModel) jTableManageReplies
.getModel();
String[] data = new String[5];
db.setUp("IT Innovation Project");
String sql = "Select forumReplies.reply_ID,forumReplies.reply_topic,forumTopics.topic_title,forumReplies.reply_content,forumReplies.reply_by from forumReplies,forumTopics WHERE forumReplies.reply_topic = forumTopics.topic_id ";
ResultSet resultSet = null;
resultSet = db.readRequest(sql);
jTableManageReplies.repaint();
tableModel.getDataVector().removeAllElements();
try {
while (resultSet.next()) {
data[0] = resultSet.getString("reply_ID");
data[1] = resultSet.getString("reply_topic");
data[2] = resultSet.getString("topic_title");
data[3] = resultSet.getString("reply_content");
data[4] = resultSet.getString("reply_by");
tableModel.addRow(data);
}
resultSet.close();
} catch (Exception e) {
System.out.println(e);
}
}
는 그리고 이것은 내 SQL 문입니다 : 내가 다시 그리기() 데이터베이스의 최신 데이터로 테이블 데이터를 업데이트 할 수에게 전화를 작동
public boolean deleteReply() {
boolean success = false;
DBController db = new DBController();
db.setUp("IT Innovation Project");
String sql = "DELETE FROM forumReplies where reply_ID = " + replyID
+ "";
if (db.updateRequest(sql) == 1)
success = true;
db.terminate();
return success;
}
. 특정 행을 삭제 한 후 데이터를 의미합니다. 그러나 기존 게시물은 계속해서 다시 추가됩니다. 그런 다음 removeAllElement 메서드를 추가하여 내 sql 문이 select * 테이블에 있기 때문에 기존 게시물을 모두 제거합니다. 그런 다음 ArrayIndexOutOfBoundsException 오류 메시지가 있습니다. 이 문제를 해결할 가이드가 있습니까? 미리 감사드립니다.
게시 하시겠습니까? ** Short, Self Contained, Correct (Compilable), Example ** 그리고 당신의 코드는이 근처에 없다는 것을 의미합니다. 원하지 않는 코드를 모두 제거하고 문제를 보여주는 간단한 코드를 게시하십시오. – Amarnath
나는 이미 편집했다. repaint 메서드를 사용하여 테이블 데이터를 업데이트 할 수 있습니다. 그러나 기존 게시물을 계속 추가하기 때문에 기존 게시물을 삭제하고 싶습니다. 그러나 removeAllElement 메소드를 호출하면 arrayIndexOutOfBoundException이 발생합니다. 심지어 setRowCount (0) 메서드를 시도하고 동일합니다. – Newbies