使用 JComboBox 和 JTextField 进行过滤

Filter using JComboBox and JTextField

我有一个 table,我想使用 JTextField 在其中 search/filter。我有这样做的代码,而且它正在工作。

现在,我想要做的是,通过 JComboBox、select 我想要搜索的 Column 并显示整行与我搜索的内容。

这是我目前得到的代码:

private  void Filtro(String query){
     DefaultTableModel modelo = (DefaultTableModel) TabelaPessoal.getModel();
     TableRowSorter<DefaultTableModel> pesquisa = new TableRowSorter<DefaultTableModel>(modelo);
     TabelaPessoal.setRowSorter(pesquisa); 

     pesquisa.setRowFilter(RowFilter.regexFilter(query));             
 }

private void txt_pesquisaKeyReleased(java.awt.event.KeyEvent evt) {                                         
    String query = txt_pesquisa.getText().toLowerCase();
    Filtro(query);
} 

我该怎么做?

试试下面的代码

public class ColumnName {
    public String columnName;
    public int columnIndex;

    public ColumnName( String columnName, int columnIndex ) {
        this.columnName = columnName;
        this.columnIndex = columnIndex;
    }

    public String getColumnName() {
        return columnName;


    public String toString() {
        return columnName;
    }

    public int getColumnIndex() {
        return columnIndex;
    }
}

public JComboBox createComboBox( TableModel model ) {
    int count = model.getColumnCount();
    Object[] items = new Object[count];
    for( int i = 0 ;i < count;i++ ) {
        String columName = model.getColumnName(i);
        items[i] = new ColumnName( columName,i);
    }
    return new JComboBox(items);
}

JComboBox columnCombo = createComboBox( TabelaPessoal.getModel() );

private  void Filtro(String query){
    DefaultTableModel modelo = (DefaultTableModel) TabelaPessoal.getModel();
    TableRowSorter<DefaultTableModel> pesquisa = new 
    TableRowSorter<DefaultTableModel>(modelo);
    TabelaPessoal.setRowSorter(pesquisa); 

    ColumnName columnName = ( ColumnName  ) columnCombo.getSelectedItem();
    pesquisa.setRowFilter( RowFilter.regexFilter(query, columnName.getColumnIndex() ) );             
}