将GUI窗口设置为Java中的行

时间:2012-05-23 18:16:36

标签: java user-interface focus

我有一个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;

    }

如果需要进一步的信息,请告诉我。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

试试这个,

row.requestFocusInWindow();

答案 1 :(得分:1)

使用此:

my_table.scrollRectToVisible(my_table.getCellRect(i, 1, true));