Rumah >Java >javaTutorial >Mengapa JTable Saya Tidak Kemas Kini Selepas Memadam Baris daripada Pangkalan Data?

Mengapa JTable Saya Tidak Kemas Kini Selepas Memadam Baris daripada Pangkalan Data?

Barbara Streisand
Barbara Streisandasal
2024-11-16 11:48:03673semak imbas

Why Doesn't My JTable Update After Deleting a Row from the Database?

Isu paparan GUI AbstractTableModel

Masalah yang anda hadapi adalah berkaitan dengan cara anda mengemas kini model jadual apabila baris dipadamkan. Pada masa ini, pendengar tindakan butang deleteSelectedRow anda mengemas kini data dalam pangkalan data tetapi tidak mencetuskan model jadual untuk memuat semula. Inilah sebabnya mengapa jadual masih menunjukkan baris yang dipadamkan.

Bagaimana untuk menyelesaikan isu?

Untuk menyelesaikan isu ini, anda perlu memberitahu model jadual secara eksplisit bahawa data telah berubah. Anda boleh melakukan ini dengan memanggil kaedah fireTableRowsDeleted() antara muka TableModel apabila baris dipadamkan daripada pangkalan data. Ini akan mencetuskan model jadual untuk mengemas kini struktur data dalamannya dan menyegarkan semula jadual.

Berikut ialah versi terkini kod anda yang merangkumi perubahan yang diperlukan:

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());
        }

    }

});

Dengan memanggil fireTableRowsDeleted() , anda mengarahkan model jadual untuk mengalih keluar baris yang ditentukan daripada struktur data dalamannya dan mengemas kini jadual dengan sewajarnya. Ini akan memastikan bahawa GUI mencerminkan perubahan yang dibuat pada pangkalan data asas.

Atas ialah kandungan terperinci Mengapa JTable Saya Tidak Kemas Kini Selepas Memadam Baris daripada Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn