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
/*
* 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);
}
}
Olhe a imagem da tela aê :
