谢谢@Germann ……
我解决了它,我将提供解决方案,以便其他人可以从中获得帮助.
你是对的resultSet.absolute(…);返回布尔值,但它也将光标移动到其参数resultSet.absolute(table.getSelectedRow());中的指定行.那是什么问题.
问题是:
行dTableModel.removeRow(table.getSelectedRow());不得在resultSet.absolute(table.getSelectedRow())之前调用;因为(第一个)它删除了所选行,并且因为它被删除,所以第二个方法没有选中任何内容,因此table.getSelectedRow()返回-1.并且如文档中所指定,absolute(-1)将光标移动到最后一行,并删除基础数据库中的最后一行.
所以解决方案是颠倒那些行的顺序,我更喜欢在resultSet.deleteRow()之后创建它.
JButton removeEmployee = new JButton("Remove Selected");
removeEmployee.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{/* here I added +1 because it moves the row to the selected row -1
I don't know why. But it now works well */
resultSet.absolute(table.getSelectedRow()+1);
resultSet.deleteRow();
dTableModel.removeRow(table.getSelectedRow());
} catch (SQLException e1)
{
e1.printStackTrace();
}
}
});