현재 직면하고 있는 문제는 행 삭제 시 테이블 모델을 업데이트하는 방법과 관련이 있습니다. 현재 deleteSelectedRow 버튼 작업 리스너는 데이터베이스의 데이터를 업데이트하지만 테이블 모델을 새로 고치도록 트리거하지는 않습니다. 이것이 테이블에 삭제된 행이 계속 표시되는 이유입니다.
이 문제를 해결하려면 데이터가 변경되었음을 테이블 모델에 명시적으로 알려야 합니다. 데이터베이스에서 행이 삭제될 때마다 TableModel 인터페이스의 fireTableRowsDeleted() 메서드를 호출하여 이를 수행할 수 있습니다. 그러면 테이블 모델이 내부 데이터 구조를 업데이트하고 테이블을 새로 고치게 됩니다.
다음은 필요한 변경 사항을 포함하는 업데이트된 코드 버전입니다.
delete.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int rowIndex = table.getSelectedRow(); Object columnIndexValue = table.getModel().getValueAt(rowIndex, 0); String columnName = table.getModel().getColumnName(0); String query = "delete from world.city" + " where " + columnName + "=" + columnIndexValue; try { PreparedStatement pre = conn.prepareStatement(query); pre.executeUpdate(); JOptionPane.showMessageDialog(null, "Row Deleted Successfully"); // Notify the table model that the data has changed ((TableModel) table.getModel()).fireTableRowsDeleted(rowIndex, rowIndex); } catch (Exception e1) { JOptionPane.showMessageDialog(null, e1.getMessage()); } } });
fireTableRowsDeleted()를 호출하여 , 내부 데이터 구조에서 지정된 행을 제거하고 이에 따라 테이블을 업데이트하도록 테이블 모델에 지시합니다. 이렇게 하면 기본 데이터베이스에 대한 변경 사항이 GUI에 반영됩니다.
위 내용은 데이터베이스에서 행을 삭제한 후 JTable이 업데이트되지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!