Tenho uma JTable que inicializa sem linhas. Coloquei um botão “Adicionar linha” que adiciona a linha e esta linha é composta por um JComboBox, sendo seus itens carregados do banco de dados. Até aí tudo bem.
O problema está no botão de excluir a linha selecionada, porque ele tá dando IndexArrayOutOfBounds. Percebi q era pq ele mantia selecionado a linha q já havia sido excluída, então usei a função changeSelection. Mas o JComboBox da linha excluída mantém selecionado, e ai continua dando o mesmo erro de out of bounds.
Usei a função stopCellEditor na linha selecionada e deu certo!
Qualquer dúvida avisa que mostro o código.
Cacapava
Cara, mostra o código aí! =]
dzanotto
Segue o código:
//DESDE A CRIAÇÃO DA JTABLE ATÉ A FUNÇÃO DO BOTÃO REMOVERfinalJScrollPanepnlTableMaterias=newJScrollPane();pnlMaterias.add(pnlTableMaterias);tblMaterias=newJTable();modelTable=newDefaultTableModel(newObject[][]{},newString[]{"MATÉRIA"});tblMaterias.setModel(modelTable);pnlTableMaterias.setViewportView(tblMaterias);finalJButtonbtnNovaLinha=newJButton();btnNovaLinha.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){try{modelTable.addRow(newObject[]{});TableColumntipo;tipo=tblMaterias.getColumnModel().getColumn(0);tipo.setCellEditor(newDefaultCellEditor(addCbxMaterias()));}catch(Exceptione1){JOptionPane.showMessageDialog(pnlPrincipal,e1.getMessage(),"Erro!",JOptionPane.ERROR_MESSAGE);}}});pnlMaterias.add(btnNovaLinha);finalJButtonbtnRemoverLinha=newJButton();btnRemoverLinha.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventarg0){try{tblMaterias.getCellEditor(tblMaterias.getSelectedRow(),0).stopCellEditing();modelTable.removeRow(tblMaterias.getSelectedRow());}catch(Exceptione2){JOptionPane.showMessageDialog(pnlMaterias,"Primeiro selecione a linha na tabela!","Erro!",JOptionPane.ERROR_MESSAGE);}}});pnlMaterias.add(btnRemoverLinha);