搜索时的 JTable - 没有得到正确的 ID

问题描述

所以我试图在搜索名称后点击表格,然后在其他表格中编辑它,问题是我没有得到正确的 ID,而是只得到第一个 ID。>

JTable

Search in action

ID wrong

编辑代码

int linha = this.jTable1.getSelectedRow();
int idUtilizador = Integer.parseInt((String)(this.jTable1.getModel() ).getValueAt(linha,0));
Utilizador uti = UtilizadorJpaController.read(idUtilizador);
CriarCliente updateCliente = new CriarCliente(uti);
updateCliente.setVisible(true);

搜索代码

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
tablerowsorter<DefaultTableModel> tr = new tablerowsorter<DefaultTableModel>(model);
jTable1.setRowSorter(tr);
tr.setRowFilter(RowFilter.regexFilter(jTextField1.getText().trim(),1))

解决方法

当您对表格进行排序或过滤时,TableModel 中的数据不会改变。只有数据视图发生变化。

如果要从模型中获取数据,那么需要将“视图行”转换为“模型行”:

int linha = this.jTable1.getSelectedRow();
int modelRow = jTable1.convertRowIndexToModel(linha);
int idUtilizador = Integer.parseInt((String)(this.jTable1.getModel() ).getValueAt(modelRow,0));
//int idUtilizador = Integer.parseInt((String)(this.jTable1.getModel() ).getValueAt(linha,0));

另外,你为什么使用 Integer.parseInt(...)?如果模型中的数据是整数值,那么它应该存储为整数值,而不是字符串值。