我已经从数据库中填充了一个jTable,现在我想添加更多的functiaonality,我想删除一行,我有这样的数据结构:
public Vector getUser()throws Exception {
Vector<Vector<String>> userVector = new Vector<Vector<String>>();
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
PreparedStatement pre = conn.prepareStatement("SELECT * FROM korisnici");
rs = pre.executeQuery();
while (rs.next()) {
Vector<String> user = new Vector<String>();
user.add(rs.getString(1));
user.add(rs.getString(2));
user.add(rs.getString(3));
user.add(rs.getString(4));
userVector.add(user);
}
if (conn!=null)
conn.close();
return userVector;
}
接下来我用这样的模型创建了一个jTable
jTable1.setModel(new javax.swing.table.DefaultTableModel(
data,header
));
所以现在我想用
删除行jTable1.remove(int);
我的数据库有7行,当我把int = 1时,我得到outOfBoundsException:1
我错了,对吧?如何正确删除行?
答案 0 :(得分:2)
使用DefaultTableModel
根据行号删除行。
((DefaultTableModel) table.getModel()).removeRow(row)
有关详细说明,请查看How to Use Tables
答案 1 :(得分:1)
要从表格中删除行,您需要
((DefaultTableModel)jTable.getModel()).removeRow(rowToRemove);
JTable
本身只是一些显示逻辑:它下面的表格模型控制着数据,而且它需要与之交互。然后,表格本身将呈现表格模型中的任何内容。
由于您自己创建了DefaultTableModel
,因此更容易实现此目标的方法是通过
DefaultTableModel model = new DefaultTableModel(data,header);
jTable1.setModel(model);
然后在
model.removeRow(rowToRemove);
这可以节省您每次查询表格以查找表格模型。
答案 2 :(得分:0)
现在我正在努力从JTable中删除记录,但是现在我想从db中删除它,当我手动输入字符串但我想通过点击它从db中删除它时它有效。这就是我所拥有的
PreparedStatement ps = conn.prepareStatement("DELETE FROM user WHERE JMBG = ? ");
ps.setString(1, value2);
ps.executeUpdate();
其中value2是一个String。 如何设置value2以从鼠标单击中获取值?
我明白了它的作用如下:
value2=(String) ((DefaultTableModel) jTable1.getModel()).getValueAt(row, 2);
其中row是
int row = jTable1.getSelectedRow();
开始时非常混乱,删除随机内容,但现在它按预期工作