Bom dia pessoal, como eu fasso para pesquisar em um JTable já carregado com todos os registros na medida que eu vou digitando?
Por exemplo: assim quando eu abro a minha aplicação esse Jtable já vem carregado com todos os registros, desta forma não se tem necessidade de realizar uma nova
consulta no banco, basta apenas ir localizando de acordo com o que for digitado.
Aqui é a minha classe
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package gui.consultas;
import banco.Conexao;
import gui.layout.AJDialog;
import gui.layout.AJTable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
import javax.swing.table.DefaultTableModel;
/**
*
-
@author JOHN LENO
*/
public final class ConsultaGrupoProduto extends AConsulta{private JTextField tf_codGrupoProduto;
private ArrayList<Object[]> gruposList;private Object[][] carregarGruposProduto() {
gruposList = new ArrayList<>();try { PreparedStatement pstmt = Conexao.getConexao().prepareStatement(QUERY_102); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { Object[] object = new Object[2]; object[0] = rs.getString("grp_cd"); object[1] = rs.getString("grp_nm"); gruposList.add(object); } } catch (SQLException ex) { } Object[][] gruposArray = new Object[gruposList.size()][2]; gruposArray = gruposList.toArray(gruposArray); return gruposArray;
}
@Override
public void inicializarComponentes() {}
@Override
public void inserirPropriedadesComponentes() {
String[] columnIdentifiers = {“Código”, “Descrição”};
DefaultTableModel model = (DefaultTableModel) jt.getModel();
model.setDataVector(carregarGruposProduto(), columnIdentifiers);
jt.setAutoResizeMode(AJTable.AUTO_RESIZE_OFF);
jt.getColumnModel().getColumn(0).setPreferredWidth(70);//Especifica o tamanho da coluna
jt.getColumnModel().getColumn(1).setPreferredWidth(278);// jt.setFillsViewportHeight(true); /* * Listeners. */ jt.addMouseListener( new MouseListener() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { tf_codGrupoProduto.setText(jt.getValueAt(jt.getSelectedRow(), 0).toString()); ConsultaGrupoProduto.this.dispose(); tf_codGrupoProduto.requestFocus(); } } @Override public void mousePressed(MouseEvent e) { tf_codGrupoProduto.requestFocus(); } @Override public void mouseReleased(MouseEvent e) { tf_codGrupoProduto.requestFocus(); } @Override public void mouseEntered(MouseEvent e) { tf_codGrupoProduto.requestFocus(); } @Override public void mouseExited(MouseEvent e) { tf_codGrupoProduto.requestFocus(); } }); jb1.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (jt.getSelectedRow() != -1) { tf_codGrupoProduto.setText(jt.getValueAt(jt.getSelectedRow(), 0).toString()); ConsultaGrupoProduto.this.dispose(); } } }); jb2.addActionListener( new ActionListener() { @Override public void actionPerformed(ActionEvent e) { ConsultaGrupoProduto.this.dispose(); } }); /* * Código para modificar o key binding para tecla ENTER. */ Action enter = new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { tf_codGrupoProduto.setText(jt.getValueAt(jt.getSelectedRow(), 0).toString()); // ConsultaGrupos.this.dispose(); } }; jt.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put( KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "ENTER"); jt.getActionMap().put("ENTER", enter);
}
@Override
public void inserirComponentes() {}
public ConsultaGrupoProduto(AJDialog owner, JTextField tf_codGrupoProduto){
super(owner);
this.tf_codGrupoProduto = tf_codGrupoProduto;
this.setTitle(“Consulta Grupo de Produtos”);
this.setSize(400, 265);
this.setLocationRelativeTo(null);inicializarComponentes(); inserirPropriedadesComponentes(); inserirComponentes(); this.setVisible(true);
}
}
[/code]
Olhe a imagem da tela aê :