-1

これは私のテーブルモデルです:

public class d9 extends AbstractTableModel {

ArrayList<String> cols = new ArrayList<>();
ArrayList<ArrayList<String>> data = new ArrayList<>();

public d9() {
...
int c = resultSet.getMetaData().getColumnCount();
            while (resultSet.next()) {
            ArrayList<String> eachRow = new ArrayList<>();
            for (int i = 1; i <= c; i++) {
                eachRow.add(resultSet.getString(i));
            }
            data.add(eachRow);
        }
...
}

@Override
public int getRowCount() {
return data.size();
}

@Override
public int getColumnCount() {
return cols.size();
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
ArrayList<String> selectedRow = data.get(rowIndex);
return selectedRow.get(columnIndex);
}

@Override
public String getColumnName(int column) {
return cols.get(column);
}

public void removeRow(int rowNumber) {
data.remove(rowNumber);
fireTableRowsDeleted(rowNumber, rowNumber);
}
}

さて、convertRowIndexToModel行番号をremoveRowメソッドに渡した後、Row remove from table. しかし、プログラムを再実行すると、戻ってきました!

4

1 に答える 1

3

呼び出すときremoveRowは、データベースから行を削除してみる必要があります。

データベースの構造がわからないので、詳細を入力する必要がありますが、これはあなたがする必要があることの簡単な概要です

public void removeRow(int rowNumber) throws SQLException {
    Connection con = ...;
    PreparedStatement ps = null;

    String keyValue = ...; // Get key value from the ArrayList

    try {
        ps = con.prepareStatement("DELETE from youDatabaseTabe where key=?");
        ps.setObject(1, keyValue);
        if (ps.executeUpdate() == 1) {
            data.remove(rowNumber);
            fireTableRowsDeleted(rowNumber, rowNumber);
        } else {
            throw new SQLException("Failed to remove row from database");
        }
    } finally {
        try {
            ps.close();
        } catch (Exception e) {
        }
    }
}

JDBC Database Accessを読んで時間を費やすことをお勧めします。

于 2013-07-31T07:26:11.310 に答える