Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JTable search不提供搜索行所选行数据_Java_Swing_Jtable_Tablerowsorter - Fatal编程技术网

Java JTable search不提供搜索行所选行数据

Java JTable search不提供搜索行所选行数据,java,swing,jtable,tablerowsorter,Java,Swing,Jtable,Tablerowsorter,我试图将搜索到的行数据从JTable获取到JTextField组件中,但当我搜索时,它并没有给出搜索到的行所选行数据 private void jTable1MouseClicked(java.awt.event.MouseEvent evt) { DefaultTableModel obj = (DefaultTableModel) jTable1.getModel(); int row = 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());

请在问题本身添加更多文本,更详细地解释代码和问题。2更好地设置代码格式在问题中添加更多文本将允许您这样做。3此外,您还需要浏览、和部分,以了解此网站的工作原理,并帮助您改进当前和未来的问题,这有助于您获得更好的答案。此外,请注意,如果您能够创建并发布一个小型的自足程序来说明您的问题,这将是最好的,并在你的问题中以代码格式的文本,a。