Problemas na JTable

1 resposta
T

Estou com o seguinte problema:
Ao dar duplo clique ou enter na tabela o jTable.getSelectedRow() sempre me retorna -1, como se nenhuma linha estivesse selecionada, alguem poderia me dizer oque pode estar o casionando tal erro? Caso necessário posto mais partes do código

...


    private void jTableMouseClicked(java.awt.event.MouseEvent evt) {
        if (evt.getClickCount() > 1) {
            setAtendimentoSelecionado(null);
            JTable t = (JTable) evt.getSource();
            int column = jTable.getColumnCount(); //Coluna ID
            int row = t.getSelectedRow();
            Atendimento atendimento = (Atendimento) (((TableModel) t.getModel()).getValueAt(row, column));
            setAtendimentoSelecionado(atendimento);
            jTabbedPane.setSelectedIndex(1);
        }
}

    private void jTableKeyPressed(java.awt.event.KeyEvent evt) {
        int key = evt.getKeyCode();
        if (key == java.awt.event.KeyEvent.VK_ENTER || key == java.awt.event.KeyEvent.VK_SPACE) {
            evt.setKeyCode(java.awt.event.KeyEvent.CHAR_UNDEFINED);
            setAtendimentoSelecionado(null);
            JTable t = (JTable) evt.getSource();
            int column = jTable.getColumnCount(); //Coluna ID
            int row = t.getSelectedRow();
            Atendimento atendimento = (Atendimento) (((TableModel) t.getModel()).getValueAt(row, column));
            setAtendimentoSelecionado(atendimento);
            jTabbedPane.setSelectedIndex(1);
        }
}


...
private void initTable() {
        //Definido as colunas
        MyTableModel tm = new MyTableModel();
        tm.addColumn("Código");
        tm.addColumn("Cliente");
        tm.addColumn("Data Inclusão");
        tm.addColumn("Data Previsão");
        tm.addColumn("Tipo");
        tm.addColumn("Status");
        tm.addColumn("Obj");
        jTable.setModel(tm);

        // Definindo a ordenação...
        MyTableSorter ts = new MyTableSorter(tm);
        jTable.setModel(ts);
        ts.setTableHeader(jTable.getTableHeader());

        //Definido a largura das colunas...
        jTable.getColumn("Código").setPreferredWidth(30);
        jTable.getColumn("Cliente").setPreferredWidth(150);
        jTable.getColumn("Data Inclusão").setPreferredWidth(50);
        jTable.getColumn("Data Previsão").setPreferredWidth(50);
        jTable.getColumn("Tipo").setPreferredWidth(40);
        jTable.getColumn("Status").setPreferredWidth(60);
        jTable.removeColumn(jTable.getColumn("Obj"));

    }

private void pesquisar(Transacao t) {
        try {
            initTable();
            MyTableSorter ts = (MyTableSorter) jTable.getModel();
            ts.reset();

            AtendimentoSC filtro = new AtendimentoSC();
            filtro.filtro = jTextField_Filtro.getText();
            filtro.cliente = clienteFiltroListener.getCliente();
            filtro.status = jComboBox_Status_Filtro.getSelectedIndex();
            filtro.impresso = jComboBox_Impresso_Filtro.getSelectedIndex();
            filtro.ordenacao = "codigo";

            ArrayList<Atendimento> lista = AtendimentoBD.listar(filtro, t);
            for (Atendimento atendimento : lista) {
                Object[] row = new Object[7];
                row[0] = atendimento.codigo;
                row[1] = atendimento.cliente.nome;
                row[2] = CalendarUtils.calendar2String(atendimento.dataInclusao);
                row[3] = CalendarUtils.calendar2String(atendimento.dataPrevisao);
                row[4] = atendimento.tipo.nome;
                row[5] = atendimento.statusAtendimento.nome;
                row[6] = atendimento;
                ts.addRow(row);
            }
        } catch (Exception ex) {
            Msg.alert(this, "Não foi possível carregar tabela. \n", ex);
        } finally {
            jTabbedPane.setTitleAt(0, "Listagem (" + String.valueOf(jTable.getRowCount()) + ")");
            jTextField_Filtro.requestFocus();
        }
    }

...

Obrigado.

1 Resposta

T

Já descobri qual era o problema, estava fazendo algumas coisas antes de pegar a linha na tabela.
RESOLVIDO.

Criado 25 de abril de 2011
Ultima resposta 25 de abr. de 2011
Respostas 1
Participantes 1