GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Duvida sobre For buscando no Jtable

Preciso excluir as linhas selecionadas de um jtable. Mas não estou conseguindo. Estou utilizando o DefaultTableModel, pra estudo. Li em alguns tópicos que precisaria fazer um for que apague as linhas de maior índice pra menor. Poderiam me dar um exemplo de como fazer?
*Código que utilizo pra apagar a linha digitada:

     int linha = jtbVendas.getSelectedRow();
     DefaultTableModel modelo = (DefaultTableModel) jtbVendas.getModel();
     modelo.removeRow(linha);

Como você popula (preenche) a JTable? Supondo que seja através de uma lista (List/ArrayList), você pode apagar o item da lista e recarregar a JTable. Dê-nos mais detalhes.

Preencho os campos e ele envia pra jtable.

private void adicionarDependente() {

    if (jtfNomeDependente.getText().equals("") || jtfGrauParentesco.getText().equals("")) {
        JOptionPane.showMessageDialog(this, "Você deve preencher todos os campos!", "Atenção", JOptionPane.WARNING_MESSAGE);
    } else {
        //adicionar uma linha na tabela
        DefaultTableModel modelo = (DefaultTableModel) jtbDependenteLista.getModel();
        int cont = 0, id;
        id = jtbDependenteLista.getRowCount() + 1;
        for (int i = 0; i < cont; i++) {
            modelo.setNumRows(0);
        }
        modelo.addRow(new Object[]{
            id,
            jtfNomeDependente.getText(),
            jtfGrauParentesco.getText()

        });
    }
}

Então, aqui:
DefaultTableModel modelo = (DefaultTableModel) jtbDependenteLista.getModel() modelo recupera o model da tabela jtbDependenteLista,
mas aqui:
DefaultTableModel modelo = (DefaultTableModel) jtbVendas.getModel(),
o modelo recupera o modelo da tabela jtbVendas? Então, como a tabela jtvendas terá acesso ao modelo da tabela jtbDependenteLista?

Havia errado o código. É assim que excluo.

    int linha = jtbDependenteLista.getSelectedRow();
    DefaultTableModel modelo = (DefaultTableModel) jtbDependenteLista.getModel();
    modelo.removeRow(linha);

E está apresentando alguma exceção, alerta?

Obs.: por essas e outras que eu não uso DefaultTableModel e sim AbstractTableModel (crio minha versão).

Só não exclui. Como posso criar o método de exclusão? Ou criar a minha versão?

Varios exemplos abaixo, veja qual se aplica ao seu caso.

1 Curtida

Funcionou com este, caso alguém mais precise:

DefaultTableModel modelo = (DefaultTableModel) jtbDependenteLista.getModel();
IntStream.of(jtbDependenteLista.getSelectedRows())
                .boxed()
                .sorted(Collections.reverseOrder())
                .forEach(modelo::removeRow);