gpt4 book ai didi

java - 删除 JTable 行而不将 RowIndex 转换为模型

转载 作者:行者123 更新时间:2023-11-29 03:29:44 25 4
gpt4 key购买 nike

我知道要删除一行我应该这样做:

        if (table.getSelectedRow() > -1) {
int rowToTable = table.getSelectedRow();
int rowToModel = table.convertRowIndexToModel(rowToTable);
model.removeBook(rowToModel);
} else {
JOptionPane.showMessageDialog(null, "Select A Row");
}

但是,现在我在不使用 rowToModel 变量的情况下尝试这种方法,并且仍然可以正确删除:

        if (table.getSelectedRow() > -1) {
int rowToTable = table.getSelectedRow();
model.removeBook(rowToTable);
} else {
JOptionPane.showMessageDialog(null, "Select A Row");
}

我的removeBook() 方法:

    public void removeBook(int row) {
Connection connection;
PreparedStatement preparedStatement;
String query = "Delete from BookTable where id=?";
try {
connection = DriverManager.getConnection(...);
Object id = this.getValueAt(row, 0);
preparedStatement = connection.prepareStatement(query);
preparedStatement.setObject(1, id);

if (preparedStatement.executeUpdate() == 1) {
this.removeRow(row);
}

} catch (SQLException sqle) {
sqle.printStackTrace();
}
}

为什么这两个都有效?!哪个是正确的?

最佳答案

仅当表既未排序也未过滤时,它无需转换即可工作 - 因为您的代码无法知道它是否已排序,所以它必须始终转换行索引。顺便说一句,对于列索引也是如此,因为用户可能已经移动了列

关于java - 删除 JTable 行而不将 RowIndex 转换为模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18912312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com