java - 无法连续搜索

标签 java swing for-loop jtable abstracttablemodel

 public boolean searchSummaryData(String textToFind) {
    int fromRow, fromCol;
    fromRow = summaryTable.getSelectedRow();
    fromCol = summaryTable.getSelectedColumn();

    if (fromRow < 0) {
        fromRow = 0; //set to start point, first row 
    }
    if (fromCol < 0) {
        fromCol = 0;
    } else {
        fromCol++;//incremental search - look through each columns, then switch to next row
        if (fromCol >= summaryTable.getColumnCount()) {
            fromCol = 0;
            fromRow++;
        }
    }
    for (int i = fromRow; i < summaryTableModel.getRowCount(); i++) {
        for (int j = fromCol; j < summaryTableModel.getColumnCount(); j++) {
            final Object valueAt = summaryTableModel.getValueAt(i, j); //point to object at i,j
            if (valueAt != null) {
                textToFind = textToFind.toLowerCase();
                if (valueAt.toString().toLowerCase().contains(textToFind)) {
                    //Map the index of the column/row in the table model at j/i to the index of the column/row in the view.
                    int convertRowIndexToView = summaryTable.convertRowIndexToView(i);
                    int convertColIndexToView = summaryTable.convertColumnIndexToView(j);
                    summaryTable.setRowSelectionInterval(i, i);
                    summaryTable.setColumnSelectionInterval(j, j);
                    //Return a rectangle for the cell that lies at the intersection of row and column.
                    Rectangle rectToScrollTo = summaryTable.getCellRect(convertRowIndexToView, convertColIndexToView, true);
                    tableSp.getViewport().scrollRectToVisible(rectToScrollTo);
                    return true;

                }
            }
        }
    }
    return false;
}

我的上述搜索方法有问题。我这样做的方式,它只允许我搜索一次特定的匹配关键字。在同一个 GUI 屏幕中,如果我进行第二次搜索,即使匹配关键字,也找不到结果。我很确定最后搜索的索引被保留并且没有重置是问题所在,但我不确定在哪里以及如何更改它。

最佳答案

您正在将 fromRowfromCol 变量设置为选定的行和列。然后您将选择更改为找到第一个结果的位置。如果第二次搜索仅找到当前选择左侧或上方的内容,则不会找到任何内容。

为什么不首先将 fromRowfromCol 设置为 0, 0?

关于java - 无法连续搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14717915/

相关文章:

python - 当列表中的元组没有返回任何内容时写入错误

java - 按降序对数组进行排序并显示每次迭代的输出

java - 在java中多线程打印偶数和奇数?

java - Joshua Bloch 的 Effective Java 中的 Equals 方法

java - 弹出菜单似乎不起作用

java - 在 Swing 中显示 HTML

java - KeyTypedEvent KeyEvent的KeyCode一直是0?

python - 使用for循环的pandas dataframe concat不起作用

java - 如何通过使其不可读来隐藏我的特定 Java 源代码(单个类)?

Java Swing 自定义 TableCellRenderer 丢失网格线