java - JTable搜索不给搜索行选择行数据
问题描述
我正在尝试将搜索到的行数据从JTable
组件中获取,JTextField
但是当我搜索时,它并没有为搜索到的行提供选定的行数据。
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {
DefaultTableModel obj = (DefaultTableModel) jTable1.getModel();
int row = jTable1.getSelectedRow();
jTextField1.setText(obj.getValueAt(row, 1).toString());
jTextField2.setText(obj.getValueAt(row, 2).toString());
}
private void filter(String query) {
TableRowSorter<DefaultTableModel> tr = new TableRowSorter<DefaultTableModel>(table);
jTable1.setRowSorter(tr);
tr.setRowFilter(RowFilter.regexFilter(query));
TableRowSorter<DefaultTableModel> pr = new TableRowSorter<DefaultTableModel>(table3);
jTable3.setRowSorter(pr);
pr.setRowFilter(RowFilter.regexFilter(query));
}
解决方案
您的 JTable 已过滤,因此您无法使用表行索引直接从模型中获取数据,因为并非所有模型数据都显示在表中,因此您可能没有一对一的映射。
相反,您需要将表的行转换为 TableModel 中的实际行:
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
int row = jTable1.getSelectedRow();
int modelRow = jTable1.convertRowIndexToModel(row);
jTextField1.setText(model.getValueAt(modelRow, 1).toString());
jTextField2.setText(model.getValueAt(modelRow, 2).toString());
推荐阅读
- html - 响应式顶部导航栏向上移动错误
- r - 标记ggplot图形类别
- sapui5 - 使用 JSON 模型的 XML 视图中元素绑定的正确语法
- javascript - 如何更改 HTML 文档中 Javascript 元素的文本颜色
- javascript - 默认情况下将标题附加到访问 url
- python - 使用 Numpy 求解涉及模运算的线性方程组
- android - 如何让 RecyclerView 在 onCreate 中滚动到最后一个位置?
- angularjs - AngularJS Typescript服务注入错误
- javascript - 如何在使用 JS 保持文本文件格式的同时将文本文件转换为 CSV 文件?
- java - 为什么没有 java.lang.Class 的子类?