Olá Amigos,
tenho uma JTable que utilizo o método autoCreateRowSorter() para ordenar os dados da tabela de acordo com a coluna clicada pelo mouse. A ordenação é bem sucedida, porém, quando tento capturar a linha selecionada da tabela, recebo a linha com os dados antigos, ou seja, antes de ter sido ordenada pelo click do mouse.
Conforme o exemplo abaixo:
DefaultTableModel modelo = (DefaultTableModel) controleBoletim.frame.tabelaVisitas.getModel();
//Captura a linha selecionada na tabela
linhaSelecionadaVisitas = controleBoletim.frame.tabelaVisitas.getSelectedRow();
Por exemplo:
Antes de ordenar:
Clico na linha 1 com o valor 1 na primeira coluna, a linha capturada tem a primeira coluna com valor 1.
Depois de ordenar
Clico na linha 1 com valor 2 na primeira coluna, a linha capturada tem a primeira coluna com valor 1 (novamente). Ou seja, era pra ser exibido o valor 2.
Alguém me ajude?
Obrigado.
[code]//Má prática de programação 1: Variável frame e tabelaVisitas públicas
JTable tblVisitas = controleBoletim.frame.tabelaVisitas;
//Má prática de programação 2: Usar DefaultTableModel
DefaultTableModel modelo = (DefaultTableModel) tblVisitas.getModel();
//Captura a linha selecionada da tabela
linhaSelecionadaVisitas = tblVisitas.convertRowIndexToModel(tblVisitas.getSelectedRow()); [/code]
Vixi… tá tão ruim assim?
1: É que para cada classe de Gui tenho uma classe de controle correspondente, por isso os componentes da gui são públicos. Isto justifica o meu erro? Acho que não né…
2: Qual usar então?
Obrigado pelas dicas @ViniGodoy
Não mesmo. Você deveria ter criado pelo menos um método getter e ter deixado o atributo privado.
Você deveria aprender a fazer seu próprio TableModel (há uma instrução em vermelho gritante na minha assinatura com links que explicam como).
De qualquer forma, a correção de código que postei já deve resolver seu problema imediato.
Usar DefaultTableModel fere o modelo MVC.
Hahahhaha
É mesmo Vini Godoy? Que vacilo meu… o foda é que o meu projeto já está gigante, se animar farei os getters e setters para as classes da Gui.
Em relação ao DefaultTableModel, estudarei o conteúdo do link da sua assinatura e implementarei neste meu projeto, ou pelo menos nas Gui’s que estiverem apresentando o defeito especificado neste tópico.
Obrigado. Mas se alguém ainda tiver sugestões para resolução do problema ficarei agradecido de saber…