1

行ではなく列(ヘッダー値)でJTableを(検索JTextFieldを使用して)フィルタリングするための実装がJavaにありますか?検索時に見つかった文字列に従って表示/非表示にする列が必要です。

4

3 に答える 3

1

行ではなく列 (ヘッダー値) で JTable を (検索 JTextField を使用して) フィルター処理する Java の実装はありますか?

  • はい、RowFilterを見て、必要な列に適用します

検索時に見つかった文字列に従って表示/非表示にする列が必要です。

  • 簡単な仕事ではありません。多くの労力と、 に関する優れた知識Java Essential classesSwingおよび専門家である必要があるためです。JTable

  • 私はこのようには行かず、適切なを使用し、画面上ColumnRenderでジャンプ(非表示->表示--->非表示など)する代わりに、列を強調表示する必要がJTables Columnあります

  • についての例がいくつかありRowFilterますRowSorter

于 2012-10-09T08:57:22.083 に答える
0

実際のモデルをラップするカスタムTableModel実装を使用して、フィルタリングを行うことができます。列が変更されるたびに、TableModelListeners に通知し続けるだけです。

于 2012-10-09T08:47:19.407 に答える
0

私はそれが次のように機能していると思います:

非表示の列を保持する一時テーブルとテーブル モデルのグローバル変数を宣言します。

private JTable hiddenTable = new JTable();
private DefaultTableColumnModel hiddenModel = new DefaultTableColumnModel();

次に、押されたすべてのキーに対してフィルター メソッドを使用して、非表示にする列を一時テーブル モデルに追加し、メイン テーブル モデルから列を削除します。次に、それらをメイン テーブルに追加し直し、一時テーブルから削除することで、文字列が一致したときにそれらを再度表示します。

private void filterList() {

        // Hide columns
        for (TableColumn column : table.getColumns()) {
            if (!((String) column.getHeaderValue()).toLowerCase().contains(
                    searchBox.getText().toLowerCase().trim())) {
                hiddenModel.addColumn(column);
                table.getColumnModel().removeColumn(column);
            }
        }

        // Show columns
        for (TableColumn column : hiddenTable.getColumns()) {
            if (((String) column.getHeaderValue()).toLowerCase().contains(
                    searchBox.getText().toLowerCase().trim())) {
                table.getColumnModel().addColumn(column);
                hiddenModel.removeColumn(column);
            }
        }
    }

ここでの唯一の問題は、テーブルに追加し直すと列の順序が失われることです。

于 2012-10-09T09:11:32.433 に答える