1

我有一个 GUI,它显示了一个包含数千行和几列的表。当客户端使用我的搜索功能时,我正在尝试逐行迭代在 GUI 中找到的一些匹配项。我可以选择行来突出显示匹配,但我不知道使用什么方法来移动 GUI 窗口的焦点以移到下一个查找。

在下面的代码中,my_model 被实例化为一个扩展 AbstractTableModel 的简单类,my_table 是一个标准的 JTable。每当找到匹配项时,我希望能够将选定的间隔设置为下一个查找,并且我还希望将窗口焦点转移到中间有下一个查找。

    int i, ln;
    for ( i = 0, ln = my_model.getRowCount(); i < ln; i++ )
    {
        String cur_entry = (String)my_model.getValueAt(i, 1);

        if ( ! cur_entry.contains(search_query) ) continue;

        my_table.setRowSelectionInterval(i, i);

        // This is where I'd like to focus the GUI window on row i.


        String options[] = new String[]{"Find Next","Done"};
        String initialValue = options[0];

        int code = JOptionPane.showOptionDialog(null, "Continue Searching", "Find", 0, JOptionPane.QUESTION_MESSAGE, null, options, initialValue);

        if ( code != 0 )
            return;

    }

让我知道是否需要任何进一步的信息。任何帮助将不胜感激。

4

2 回答 2

1

尝试这个,

row.requestFocusInWindow();

于 2012-05-23T18:27:32.460 回答
1

用这个:

my_table.scrollRectToVisible(my_table.getCellRect(i, 1, true));
于 2012-05-23T18:33:18.417 回答