Olá denovo, gostaria de saber se alguém pode me ajudar com a seguinte questão:
Tem como eu colocar uma pequisa com parametro em meu TableModel?
Ex.: Eu tenho meu tablemodel pegando todos os valores do banco, isso usando JPA 2.0, e logo abaixo da Jtable que recebe esse tablemodel eu tenho um Jtextfield para efetuar uma pesquisa por nome, de preferencia com like. Quando eu digitar um valor nesse JtextField e clicar no botão pesquisar ele teria que me mostrar nesse Jtable somente o que eu procurei no banco. Teria como ou terei que fazer um TableModel a parte somente para isso?
segue minha classe TableModel:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package lib.gui;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.swing.table.AbstractTableModel;
import lib.database.Cliente;
/**
*
* @author fabio
*/
public class ClienteTabela extends AbstractTableModel{
String colunas[] = new String[]{"Código", "Razão Social", "Nome", "CPF", "RG",
"CNPJ", "Insc. Estadual", "Contato", "Endereço", "Num.", "Compl.", "Bairro",
"Cidade", "Cep", "UF", "Telefone", "Fax", "Celular", "Email", "Observações"};
@Override
public String getColumnName(int col) {
return colunas[col];
}
private List listaIds;
private ArrayList<Cliente> lista = new ArrayList();
public ClienteTabela(){
EntityManagerFactory emf = Persistence.createEntityManagerFactory("OpenComPU");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
listaIds = em.createQuery("SELECT c.id FROM Cliente c").getResultList();
for (Iterator<Integer> it = listaIds.iterator(); it.hasNext();) {
Integer elem = it.next();
lista.add((Cliente) em.createNamedQuery("Cliente.findById").setParameter("id", elem).getSingleResult());
}
em.close();
}
public int getRowCount() {
return lista.size();
}
public int getColumnCount() {
return 20;
}
public Object getValueAt(int rowIndex, int columnIndex) {
if(columnIndex == 0){
return lista.get(rowIndex).getId();
}else if (columnIndex == 1){
return lista.get(rowIndex).getRazaoSocial();
}else if (columnIndex == 2){
return lista.get(rowIndex).getNome();
}else if (columnIndex == 3){
return lista.get(rowIndex).getCpf();
}else if (columnIndex == 4){
return lista.get(rowIndex).getRg();
}else if (columnIndex == 5){
return lista.get(rowIndex).getCnpj();
}else if (columnIndex == 6){
return lista.get(rowIndex).getInscEst();
}else if (columnIndex == 7){
return lista.get(rowIndex).getContato();
}else if (columnIndex == 8){
return lista.get(rowIndex).getEndereco();
}else if (columnIndex == 9){
return lista.get(rowIndex).getNumero();
}else if (columnIndex == 10){
return lista.get(rowIndex).getComplemento();
}else if (columnIndex == 11){
return lista.get(rowIndex).getBairro();
}else if (columnIndex == 12){
return lista.get(rowIndex).getCidade();
}else if (columnIndex == 13){
return lista.get(rowIndex).getCep();
}else if (columnIndex == 14){
return lista.get(rowIndex).getUf();
}else if (columnIndex == 15){
return lista.get(rowIndex).getTelefone();
}else if (columnIndex == 16){
return lista.get(rowIndex).getFax();
}else if (columnIndex == 17){
return lista.get(rowIndex).getCelular();
}else if (columnIndex == 18){
return lista.get(rowIndex).getEmail();
}else if (columnIndex == 19){
return lista.get(rowIndex).getObs();
}
return null;
}
public void persist(Object object) {
}
}
Lembrando novamente que estou usando JPA 2.0 com EclipseLink. Já faz um tempinho que to procurando algo e não consigo achar nada.
O meu jFrame está assim e logo abaixo do Jtable vocês podem ver o campo para fazer a pesquisa.