Usei DefaultTableModel e agora não consigo apagar as rows!

11 respostas
SirDominque

Li este tópico : http://www.guj.com.br/java/68244-excluir-todas-as-linhas-do-jtable

Estou tentando apagar todas as linhas da tabela a cada busca mas não estou conseguindo!
Alguém me ajuda?

public static void EraseJTable()
{
    int k = jTable_produto_remocao.getRowCount();
    
    if (k > 0)
    {
        for (int i=0;i<=k;i++)
        {  
            jTable_produto_remocao.remove(0);  
        }              
    }
    
}

11 Respostas

fernandopaiva
Andre Lopes:
Li este tópico : http://www.guj.com.br/java/68244-excluir-todas-as-linhas-do-jtable

Estou tentando apagar todas as linhas da tabela a cada busca mas não estou conseguindo!
Alguém me ajuda?

public static void EraseJTable()
{
    int k = jTable_produto_remocao.getRowCount();
    
    if (k > 0)
    {
        for (int i=0;i<=k;i++)
        {  
            jTable_produto_remocao.remove(0);  
        }              
    }
    
}

Nao use DefaultTableModel...Use AbstractTableModel. Veja aqui: http://www.guj.com.br/articles/147

t+ e boa sorte.

SirDominque

mas eu ja fiz tudo com default… nao tem como apagar com default?

fernandopaiva

Andre Lopes:
mas eu ja fiz tudo com default… nao tem como apagar com default?

Para apagar todas as rows de um DefaultTableModel vc pode fazer assim.

DefaultTableModel tabela = (DefaultTableModel)suaTabela.getModel();
 tabela.setNumRows(0);

para apagar uma linha especifica assim.

int linha = suaTabela.getSelectedRow();
DefaultTableModel tabela = (DefaultTableModel)suaTabela.getModel();
tabela.removeRow(linha);

Novamente, nao use DefaultTableModel use AbstractTableModel

t+ e boa sorte !

SirDominque

[quote=fernandopaiva]

Andre Lopes:
mas eu ja fiz tudo com default… nao tem como apagar com default?

Para apagar todas as rows de um DefaultTableModel vc pode fazer assim.

DefaultTableModel tabela = (DefaultTableModel)suaTabela.getModel();
 tabela.setNumRows(0);

Então ficaria assim :

DefaultTableModem tabela = (DefaultTableModel)jTable_produto_remocao.getModel(); tabela.setNumRows(0);

Assim ?

fernandopaiva

[quote=Andre Lopes]

fernandopaiva:
Andre Lopes:
mas eu ja fiz tudo com default… nao tem como apagar com default?

Para apagar todas as rows de um DefaultTableModel vc pode fazer assim.

DefaultTableModel tabela = (DefaultTableModel)suaTabela.getModel();
 tabela.setNumRows(0);

Então ficaria assim :

DefaultTableModem tabela = (DefaultTableModel)jTable_produto_remocao.getModel(); tabela.setNumRows(0);

Assim ?

Para apagar uma linha selecionada é como mostrei em (linha especifica), para todas vc pode fazer com setNumRows(0) ou pegar a quantidade de linhas com getRowCount() e fazer um for pra ir apagando uma a uma…ai vc quem sabe. Tem pra todos os gostos.

Nao use DefaultTableModel. #FicaDica

t+ e boa sorte.

SirDominque

Fiquei confuso agora… Sem querer pedir muito, mas como seria o código pra apagar todas as linhas? Não estou conseguindo enxergar o que vc está dizendo…

M

Andre Lopes:
Fiquei confuso agora… Sem querer pedir muito, mas como seria o código pra apagar todas as linhas? Não estou conseguindo enxergar o que vc está dizendo…

Coloque isso em seu código.

SirDominque

public static void EraseJTable()
{

DefaultTableModel tabela = (DefaultTableModel)jTable_produto_remocao.getModel();
tabela.setNumRows(0);

}
Deu erro:

SirDominque

Então gente, acho que nao expliquei bem, desculpa…

O que eu quero, e deixar todas as linhas e todas as colunas “NULL” , deixar em branco! mas que as linhas continuem la…

Tem como ?

SirDominque

Então, acho que eu consegui desse jeito :

public static void EraseJTable()
{
    int i = 0;
    int j = 0;
    String x = null;
    
    
    for (i=0;i<=jTable_produto_remocao.getRowCount();i++ )
    {
        for (j = 0;j<= jTable_produto_remocao.getColumnCount();j++ )
        {
             jTable_produto_remocao.setValueAt(x, i, j);
        }
    }
}

Ele apaga mas aparece esse erro :

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 6 >= 6 at java.util.Vector.elementAt(Vector.java:427) at javax.swing.table.DefaultTableColumnModel.getColumn(DefaultTableColumnModel.java:277) at sun.swing.SwingUtilities2.convertColumnIndexToModel(SwingUtilities2.java:1783) at javax.swing.JTable.convertColumnIndexToModel(JTable.java:2551) at javax.swing.JTable.setValueAt(JTable.java:2710) at controleestoque.FormularioPrincipal.EraseJTable(FormularioPrincipal.java:826) at controleestoque.FormularioPrincipal.jButton_remocao_buscaAvancadaActionPerformed(FormularioPrincipal.java:649) at controleestoque.FormularioPrincipal.access$500(FormularioPrincipal.java:33) at controleestoque.FormularioPrincipal$6.actionPerformed(FormularioPrincipal.java:364) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6288) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6053) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4651) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643) at java.awt.EventQueue.access$000(EventQueue.java:84) at java.awt.EventQueue$1.run(EventQueue.java:602) at java.awt.EventQueue$1.run(EventQueue.java:600) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:616) at java.awt.EventQueue$2.run(EventQueue.java:614) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:613) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Edit:

Parece que deu certo deste jeito :

public static void EraseJTable()
{
    int i = 0;
    int j = 0;
    String x = null;
    
    
    for (i=0;i<=jTable_produto_remocao.getRowCount() - 1;i++ )
    {
        for (j = 0;j<= jTable_produto_remocao.getColumnCount() - 1;j++ )
        {
             jTable_produto_remocao.setValueAt(x, i, j);
        }
    }
}
Fexx

Muito mais trabalho e menos performance usando DefaultTableModel. só problemas. use AbstractTableModel

Criado 23 de janeiro de 2012
Ultima resposta 23 de jan. de 2012
Respostas 11
Participantes 4