Tenho um JTable que o usuario seleciona uma linha inteira por vez, e conforme a linha, abre uma janela ao lado com outros campos para digitar.
Entao, eu tenho o codigo abaixo para controlar o evento de mudanca de linha:
ListSelectionModel rowSM = fieldTable.getSelectionModel();
rowSM.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
//Ignore extra messages.
if (e.getValueIsAdjusting()) return;
ListSelectionModel lsm = (ListSelectionModel) e.getSource();
if (!lsm.isSelectionEmpty()) {
int selectedRow = lsm.getMinSelectionIndex();
fieldTableSelected(selectedRow);
}
}
});
E o metodo fieldTableSelected para fazer as checagens e atualizacoes dos campos da tela:
boolean fieldTableSelected(int row) {
...
oldfieldok = MetodoQueChecaSeOsCamposEstaoPreenchidos(...);
if (!oldfieldok)
fieldTable.setRowSelectionInterval(row,row);
...
return oldfieldok;
}
Se o usuario nao preencher os campos corretamente, eu preciso voltar para a linha anterior, nao posso mudar de linha. Mas o codigo acima, que faz o setRowSelectionInterval() acaba deixando 2 linhas selecionadas. Ele nao perde a selecao da nova linha. Sera que eu estou usando o evento errado para fazer isso?