[Java] JTable listener

Nausea

Power Member
Boas,

Estou com pequeno problema no uso de uma JTable o que se passa é o seguinte imaginem uma tabela com alguns elementos tipo:

| Coluna 0 | Coluna 1 |
|
| Obj1 | Banana |
|Obj2 | Pêra |
| Obj3 | Laranja |

e agora eu carrego na "Coluna 0" para organizar por ordem e fica:

| Coluna 0 | Coluna 1 |
|
| Obj3 | Laranja |
| Obj2 | Pêra |
| Obj1 | Banana |

Eu tenho um listener que serve para quando eu selecciono uma linha qualquer mete-me os dados num textField

ou seja imaginem que o utilizador seleccionou um obj e agora no textfield fica lá a fruta dele.

______________________________________________
| Coluna 0 | Coluna 1 |
|
| Obj3 | Laranja |
| Obj2 | Pêra |
| Obj1 | Banana |
|_____________________________________________|
|
| "O meu fruto é:" Banana
|
|

o meu problema está embora a tabela visualmente ordenou as coisas por ordem alfabetica inversa ele na realidade continua na mesma pois em vez de mostrar laranja mostra Banana.

aqui fica o codigo do listener:
Código:
 private class ListenerMudancaLinha implements ListSelectionListener {

        public void valueChanged(ListSelectionEvent e) {
            if (!e.getValueIsAdjusting()) {
                int seleccaoActual = tblListarDocumentos.getSelectedRow();

                // se houver algum elemento seleccionado
                if (seleccaoActual >= 0) {
                    String nomeSeleccionado = tblFrutas.getModel().getValueAt(tblFrutas.getSelectedRow(), 0).toString();

                    Fruta seleccionada = baseDadosFruta.getFruta(nomeSeleccionado);

                    tfFruto.setText(seleccionada.getNomeFruto())
                }
            }
        }
    }
Eu fiz debug e os valores das variaveis estão todos bem menos a String nomeSeleccionado que continua a ser obj1.

Espero ter sido claro
 
Parece que ao ordenares a tabela não sofre alterações, apenas as colunas devolvidas.
Como estas a organizar os dados qd pões por ordem?
Tenta actualizar a tua tabela tblFrutas
 
problema resolvido tive a pesquisar
Código:
private class ListenerMudancaLinha implements ListSelectionListener {

        public void valueChanged(ListSelectionEvent e) {
            if (!e.getValueIsAdjusting()) {
                int seleccaoActual = tblListarDocumentos.getSelectedRow();

                // se houver algum elemento seleccionado
                if (seleccaoActual >= 0) {
                    String nomeSeleccionado = [COLOR=MediumTurquoise]tblFrutas.getModel().getValueAt(
                                tblFrutas.getRowSorter().convertRowIndexToModel(
                                tblFrutas.getSelectedRow()), 0).toString();[/COLOR]

                    Fruta seleccionada = baseDadosFruta.getFruta(nomeSeleccionado);

                    tfFruto.setText(seleccionada.getNomeFruto())
                }
            }
        }
    }
e tive que fazer aquela alteração serve para converter o index que o utilizador vê, o index viusal, para o idex original o index da tabela quando ela foi criada.
 
Back
Topo