Erro para excluir linha Jtable

Boa tarde, Pessoal
Estou com um problema para excluir linhas de uma jtable, e por não ter muita experiência estou com dificuldades em resolver a exceção.

Codigo da Tabela:

package ModeloBeans;

import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;

/**
*

  • @author fsantos
    */
    public class ModeloTabela extends AbstractTableModel{

    private ArrayList linhas = null;
    private String[] colunas = null;

    public ModeloTabela(ArrayList lin, String [] col){

    setLinhas(lin);
    setColunas(col);

         }
    

    public ArrayList getLinhas(){
    return linhas;

}
public void setLinhas(ArrayList dados){
linhas = dados;
}
public String[] getColunas(){
return colunas;
}
public void setColunas(String[] nomes){
colunas = nomes;

}
public int getColumnCount(){
    return colunas.length;
}

public int getRowCount(){
    return linhas.size();
}

public String getColumnName(int numCol){
    return colunas[numCol];
}

public Object getValueAt(int numLin, int numCol){
    Object[] linha = (Object[]) getLinhas().get(numLin);
    return linha[numCol];
}

}

Código para a exclusão:
int linhaSelecionada = jTable_ItensAdd.getSelectedRow();
if (jTable_ItensAdd.getSelectedRow() != -1) {
DefaultTableModel ModeloTabela = (DefaultTableModel) jTable_ItensAdd.getModel();
ModeloTabela.removeRow(jTable_ItensAdd.getSelectedRow());
int quantosRegistros = jTable_ItensAdd.getRowCount();

        if (quantosRegistros > linhaSelecionada) {
            jTable_ItensAdd.setRowSelectionInterval(linhaSelecionada, linhaSelecionada);

        } else if (jTable_ItensAdd.getRowCount() > 0) {
            jTable_ItensAdd.setRowSelectionInterval(linhaSelecionada - 1, linhaSelecionada - 1);
        }

    } else {
        JOptionPane.showMessageDialog(null, "Por Gentileza Selecione uma linha");
    }

Erro:
Exception in thread “AWT-EventQueue-0” java.lang.ClassCastException: ModeloBeans.ModeloTabela cannot be cast to javax.swing.table.DefaultTableModel
at Formularios.requisicao.jButton_Remover_ItensActionPerformed(requisicao.java:672)
at Formularios.requisicao.access$1300(requisicao.java:27)
at Formularios.requisicao$14.actionPerformed(requisicao.java:297)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Sua classe ModeloTabela não é um DefaultTableModel.

Boa tarde, Staroski
Como conserto?

Aqui você tem que trabalhar com seu ModeloTabela, dado que você não está usando o DefaultTableModel e sim um modelo customizado que você mesmo criou.

Declara a variável como sendo do tipo certo, ou seja, ModeloTabela e não DefaultTableModel.

ModeloTabela modeloTabela = (ModeloTabela) jTable_ItensAdd.getModel();

Meu querido, agora apareceu outra exceção:
Exception in thread “AWT-EventQueue-0” java.lang.UnsupportedOperationException: Not supported yet.
at ModeloBeans.ModeloTabela.(ModeloTabela.java:28)
at Formularios.requisicao.(requisicao.java:66)
at Formularios.Principal.jMenu_Inserir_RequisicaoActionPerformed(Principal.java:436)
at Formularios.Principal.access$1100(Principal.java:17)
at Formularios.Principal$12.actionPerformed(Principal.java:271)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:842)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:886)
at java.awt.Component.processMouseEvent(Component.java:6539)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6304)
at java.awt.Container.processEvent(Container.java:2239)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2297)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
at java.awt.Container.dispatchEventImpl(Container.java:2283)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
at java.awt.EventQueue$4.run(EventQueue.java:733)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Qual é a instrução que tem na linha 28 do arquivo ModeloTabela.java?

Qual instrução tem na linha 66 do arquivo requisicao.java?

As duas linhas estão vazias.
quando fiz a alteração o netbeans sugeriu a criação do método na minha ModeloTabela:

public void removeRow(int selectedRow) {
throw new UnsupportedOperationException(“Not supported yet.”); //To change body of generated methods, choose Tools | Templates.
}

Codigo com a alteração:
int linhaSelecionada = jTable_ItensAdd.getSelectedRow();
if (jTable_ItensAdd.getSelectedRow() != -1) {
ModeloTabela ModeloTb = (ModeloTabela) jTable_ItensAdd.getModel();
ModeloTb.removeRow(jTable_ItensAdd.getSelectedRow());
int quantosRegistros = jTable_ItensAdd.getRowCount();

        if (quantosRegistros > linhaSelecionada) {
            jTable_ItensAdd.setRowSelectionInterval(linhaSelecionada, linhaSelecionada);

        } else if (jTable_ItensAdd.getRowCount() > 0) {
            jTable_ItensAdd.setRowSelectionInterval(linhaSelecionada - 1, linhaSelecionada - 1);
        }

Pois é, você não implementou a remoção do item, você está lançando uma exceção.

Você precisa remover o item desejado da sua lista linhas.

public void removeRow(int linha) {
    linhas.remove(linha);   // remove a linha desejada da lista
    fireTableDataChanged(); // redesenha a JTable
}

Boa tarde, Ricardo
Muito obrigado meu amigo.
O mundo precisa de mais pessoas iguais a você!
Funcionou certinho!

Abcs