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 に答える