Olá,
estou utilizando o ObjectTableModel do marky com o TableFilter do Vini, estou trabalhando com uma tela única para realizar as pesquisas,
para isto estou criando/configurando os models desta forma:
[code]public static TableFilter modelCidade(JTable table){
AnnotationResolver resolver = new AnnotationResolver(Cidade.class);
cidadeModel = new ObjectTableModel<Cidade>(
resolver, “nomeCidade,nomeEstado,paisEstado”);
filterCidade = new TableFilter(table.getTableHeader(),
cidadeModel);
return filterCidade;
}
public static TableFilter modelContato(JTable table){
AnnotationResolver resolver = new AnnotationResolver(Contato.class);
contatoModel = new ObjectTableModel<Contato>(
resolver, “nomeContato,emailContato,telefoneContato,nomePessoa”);
filterContato = new TableFilter(table.getTableHeader(),
contatoModel);
return filterContato;
}[/code]
Na minha tela de pesquisa eu crio uma única instância da JTable:
Quando seleciono o cadastro que desejo pesquisar (faço isso em um JComboBox) a tela atualiza as colunas conforme o model selecionado,
o código responsável por isso é o seguinte:
public void setTipoPesquisa() {
codigoSelecionado = -1;
jcbTipoPesquisa.setSelectedItem(cadastroPesquisa);
if (cadastroPesquisa.equals(BD.EstruturaBanco.CIDADE)) {
table.setModel(telasPesquisa.TableModels.modelCidade(table));
} else if (cadastroPesquisa.equals(BD.EstruturaBanco.CONTATO)) {
table.setModel(telasPesquisa.TableModels.modelContato(table));
}
this.setTitle("Pesquisa de " + cadastroPesquisa);
jbTodos.setToolTipText("Pesquisar por todos os registros de " + cadastroPesquisa);
Resizer.fitAllColumns(table);
}
Más estou com um problema, está dando um erro no ArrayList quando faço a troca do model com 3 colunas para o de 4 colunas,
imagino que eu saiba o por que do erro, más não sei como corregi-lo, alguém pode me ajudar?
PS.: Quando troco de um model com 3 colunas para outro com o mesmo numero de colunas não ocorre erro.
segue o erro:
Exception occurred during event dispatching:
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)