Pesquisa em jTable

Gostaria de saber se é possível fazer com que minha jTable me apresente o item “arroz branco integral” quando for realizado uma busca por “arroz integral” ou “integral arroz”

gif

ModelProdutos

    public class ModelProdutos {

    private int codProduto;
    private String descProduto;
    private double precoProduto;

    public ModelProdutos(int codPro, String descPro, double precoPro) {
        this.codProduto = codPro;
        this.descProduto = descPro;
        this.precoProduto = precoPro;
    }

    public int getCodProduto() {
        return codProduto;
    }

    public void setCodProduto(int codProduto) {
        this.codProduto = codProduto;
    }

    public String getDescProduto() {
        return descProduto;
    }

    public void setDescProduto(String descProduto) {
        this.descProduto = descProduto;
    }

    public double getPrecoProduto() {
        return precoProduto;
    }

    public void setPrecoProduto(double precoProduto) {
        this.precoProduto = precoProduto;
    }
}

TableModel

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

public class TbModelProtudos extends AbstractTableModel {

    private final String colunas[] = {"Cód.", "Descrição", "Preço"};
    private final ArrayList<ModelProdutos> produtos;
    private final int COLUNA_COD = 0;
    private final int COLUNA_DESC = 1;
    private final int COLUNA_PRECO = 2;

    public TbModelProtudos (ArrayList<ModelProdutos> lsProdutos) {
        this.produtos = lsProdutos;
    }

    @Override
    public boolean isCellEditable(int linha, int coluna) {
        return false;
    }

    @Override
    public int getRowCount() {
        return produtos.size();
    }

    @Override
    public int getColumnCount() {
        return colunas.length;
    }

    @Override
    public String getColumnName(int indice) {
        return colunas[indice];
    }

    @Override
    public Class<?> getColumnClass(int indice) {
        switch (indice) {
            case COLUNA_COD:
                return Integer.class;
            case COLUNA_DESC:
                return String.class;
            case COLUNA_PRECO:
                return Double.class;
            default:
                return String.class;
        }
    }

    @Override
    public Object getValueAt(int linha, int coluna) {
        ModelProdutos mProdutos = this.produtos.get(linha);

        switch (coluna) {
            case COLUNA_COD:
                return mProdutos.getCodProduto();
            case COLUNA_DESC:
                return mProdutos.getDescProduto();
            case COLUNA_PRECO:
                return mProdutos.getPrecoProduto();
        }
        return null;
    }
}

ViewJTable

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.table.TableRowSorter;

public class JtableProdutos extends JPanel {

    private JTable tbProdutos;
    private JTextField campoPesquisa;
    private TbModelProtudos mTabelaProtudos;
    private TableRowSorter<TbModelProtudos> rowSorter;

    public JtableProdutos() {
        renderizar();
    }

    private void renderizar() {

        ModelProdutos p1 = new ModelProdutos(1, "ARROZ BRANCO PARBOILIZADO", 2.49);
        ModelProdutos p2 = new ModelProdutos(2, "ARROZ BRANCO INTEGRAL", 3.49);
        ModelProdutos p3 = new ModelProdutos(3, "FEIJAO CARIOCA", 14.99);
        ModelProdutos p4 = new ModelProdutos(4, "ESTRATO DE TOMATE", 3.69);
        ModelProdutos p5 = new ModelProdutos(5, "CARNE MOIDA", 9.99);

        ArrayList<ModelProdutos> lsProdutos = new ArrayList<>();

        lsProdutos.add(p1);
        lsProdutos.add(p2);
        lsProdutos.add(p3);
        lsProdutos.add(p4);
        lsProdutos.add(p5);

        mTabelaProtudos = new TbModelProtudos(lsProdutos);
        tbProdutos = new JTable(mTabelaProtudos);
        rowSorter = new TableRowSorter<>(mTabelaProtudos);
        campoPesquisa = new JTextField();
        tbProdutos.setRowSorter(rowSorter);

        tbProdutos.getColumnModel().getColumn(1).setPreferredWidth(300);

        JPanel panel = new JPanel(new BorderLayout());
        panel.add(campoPesquisa, BorderLayout.CENTER);
        setLayout(new BorderLayout());

        add(panel, BorderLayout.SOUTH);
        add(new JScrollPane(tbProdutos), BorderLayout.CENTER);

        campoPesquisa.addKeyListener(new KeyAdapter() {
            @Override
            public void keyReleased(KeyEvent evt) {
                String pesquisa = campoPesquisa.getText().toUpperCase();
                rowSorter.setRowFilter(RowFilter.regexFilter(pesquisa));
            }
        });
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                JFrame frame = new JFrame("Pesquisar Produtos");
                frame.add(new JtableProdutos());
                frame.pack();
                frame.setSize(500, 200);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}

Opa, explica melhor isso, vc quer fazer a pesquisa no dados da jTable ou quer apenas que ela exiba o resultado da pesquisa?

Olá @Rodrigo_Void, eu gostaria de pesquisar e exibir o resultado da pesquisa.

Ex: digamos que a descrição do item seja “arroz branco integral buriti 5kg”, eu gostaria de conseguir encontrá-lo pesquisado por “arroz integral 5kg”.

Está usando qual banco de dados? Pesquise sobre full-text search para o seu banco.

Vc não respondeu oque pedi, logo, minha resposta tbm será superficial.
Vc n deve fazer buscas “na jTable”. Vc vai fazer uma consulta no banco, a jTable só exibe oq vc busca. Se ela já tá exibindo dados, blz, só acrescenta um filtro neste método.
O exemplo da DAO pode tirar daqui:

No código acima, ao invés de simplesmente passar a variável pesquisa como parâmetro para o método regexFilter, você precisa montar uma expressão regular (regex) de acordo com o critério que deseja procurar.
A documentação da classe Pattern explica como utilizar expressões regulares.