Alguém tem algum exemplo de como reordenar os dados em um JTable, porém usando uma lista (ArrayList) de objetos?
O meu está funcionando bem, o problema é quando eu tento pegar um objeto da lista (uma linha) usando o tabela.getSelectedRow() como índice esse índice não corresponde a ao índica da lista (ArrayList) que está no modelo, aí quando o usuário dá duplo-clique para abrir o cadastro acaba abrindo *outro* cadastro.
Por exemplo: tenho uma lista assim:ArrayList<Producao> lista = new ArrayList<Producao>(); // supondo que esteja completa
// Objeto Producao
public class Producao extends Object implements Serializable, Comparable, Cloneable {
...
@Override
public String toString() {
return this.getOrdemServico().getTitulo();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Producao) {
if (this == obj || (this.getCodigo() == ((Producao) obj).getCodigo())) {
return true;
} else {
return false;
}
} else {
return false;
}
}
@Override
public int hashCode() {
return (int) (this.getCodigo() * 256);
}
public int compareTo(Object o) {
if (this.hashCode() < o.hashCode()) {
return -1;
} else if (this.hashCode() == o.hashCode()) {
return 0;
} else if (this.hashCode() > o.hashCode()) {
return 1;
} else {
return 1;
}
}
// getters e setters
...
}
Não vou enviar tudo agora porque é muito código, mas se alguém quiser ver o resto eu envio o TableSorter, TableModel, TableHeaderListener e tals.
Eu preciso que mesmo depois de reordenada a listagem de dados quando der duplo clique pegar o Objeto da linha, só sei fazer isso pegando o index da linha clicada, mas se faço isso não pego o Objeto verdadeiro na lista, ou seja, quando reordena na tela os índices na lista no modelo permanecem os mesmos:int index = tabelaProducao.rowAtPoint(evt.getPoint());
// Aqui não pega o Objeto Produção correto do modelo
Producao pro = ((ProducaoTableModel) tabelaProducao.getModel()).getItemAt(index);
public Producao getItemAt(int index) {
if (lista == null || lista.size() == 0) {
return null;
} else {
return lista.get(index);
}
}
Se alguém puder ajudar, ou pelo menos discutir o assunto eu agradeço.