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.