Pessoal eu estou com problema pra limpar a jTable em tempo de execução e gostaria muito da ajuda de vocês. Vou explicar como está a estrutura do programa aqui. Tem uma classe que cadastra e consulta clientes que é a classe principal. A consulta é exibida na jTable seja digitando um nome no campo de busca ou apenas clicando no botão Pesquisar que exibe tudo na jTable. E tem outras duas classes para gerenciar essa jTable. Uma classe é pra representar os dados que vai ser exibido na jTable que é onde foi declarado os atributos e métodos referente aos campos do banco e a outra classe cria a jTable extendendo do AbstractTableModel.
E na classe principal que eu faço a consulta dos dados do banco, quando eu efetuo a consulta, os dados são exibidos na jTable, só que quando eu altero ou deleto um registro, para a tabela atualizar eu tenho que fechar o frame e abrir de novo e efetuar novamente a consulta pra jTable atualizar. Mas eu gostaria de atualizar em tempo de execução sem precisar fechar o programa. Vou mostrar o código da classe que cria a jTable.
[code]public class ClienteModel extends AbstractTableModel {
private static final long serialVersionUID = 1L;
// Lista de clientes do modelo da JTable
public final List<Cliente> clientes = new ArrayList<Cliente>();
public int getColumnCount(){
return 3;
}
public int getRowCount(){
return clientes.size();
}
public Object getValueAt(int rowIndex, int columnIndex) {
Cliente cliente = clientes.get(rowIndex);
switch (columnIndex) {
case 0:
return cliente.getIdcliente();
case 1:
return cliente.getCliente();
case 2:
return cliente.getTelefone();
default:
return null;
}
}
public String getColumnName(int column) {
switch (column) {
case 0:
return "Código";
case 1:
return "Cliente";
case 2:
return "Telefone";
default:
return null;
}
}
}
[/code]
Agora o código que fica dentro do evento do botão “Pesquisar”.
[code]try{
String pesquisa = jTextFieldPesquisar.getText(); //aqui é uma variavel que armazena o dado digitado no campo de busca
st = conexao.conectar().createStatement();
sql = "select * from cliente where Cliente like '"+ "%" + pesquisa + "%" + "'";
ClienteModel modelo = (ClienteModel) jTable.getModel();
rs = st.executeQuery(sql);
while(rs.next()) {
modelo.clientes.add(new Cliente(rs));
}
jTable.updateUI();
}catch (Exception ex){
ex.printStackTrace();
}
[/code]
Esse método jTable.updateUI(); não atualiza se eu colocar depois no evento do botão Excluir ou Alterar. Ele só funciona aqui no botão Pesquisar quando eu clico nesse botão para exibir os dados na tabela.
Agora tem um outro problema. Toda vez que eu clicar no botão Consultar, vai exibir novamente os dados exibidos na primeira vez. Por exemplo, eu clico uma vez e vai exibir 10 registros, do 1 ao 10. Se eu clico de novo, vai exibir lá embaixo a partir da linha 11 esses 10 registros de novo, mas contando do 1 ao 10 novamente. Ele não atualiza quando eu efetuo a consulta de novo. Ele vai populando a tabela sem atualizar não importando quantas vezes eu efetuar a consulta.
Então tudo faz parte do mesmo problema que é limpar a jTable em tempo de execução. Aguardo a ajuda de vocês então. Obrigado.