1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Java] JTable listener

Discussão em 'Programação' iniciada por Nausea, 3 de Janeiro de 2009. (Respostas: 2; Visualizações: 1318)

  1. Nausea

    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
     
  2. nasic

    nasic Power Member

    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
     
  3. Nausea

    Nausea Power Member

    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.
     

Partilhar esta Página