问题描述
所以我试图在搜索名称后点击表格,然后在其他表格中编辑它,问题是我没有得到正确的 ID,而是只得到第一个 ID。>
编辑代码
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(...)?如果模型中的数据是整数值,那么它应该存储为整数值,而不是字符串值。