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

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?

[code]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);  
    }              
}

}[/code]

[quote=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?

[code]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);  
    }              
}

}[/code][/quote]

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

t+ e boa sorte.

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

[quote=Andre Lopes]mas eu ja fiz tudo com default… nao tem como apagar com default?
[/quote]

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 !

[quote=fernandopaiva][quote=Andre Lopes]mas eu ja fiz tudo com default… nao tem como apagar com default?
[/quote]

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 ?

[quote=Andre Lopes][quote=fernandopaiva][quote=Andre Lopes]mas eu ja fiz tudo com default… nao tem como apagar com default?
[/quote]

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 ?[/quote]

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.

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…

[quote=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…

[/quote]

Coloque isso em seu código.

public static void EraseJTable()
{

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

}
Deu erro:

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 ?

Então, acho que eu consegui desse jeito :

[code]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);
    }
}

}[/code]

Ele apaga mas aparece esse erro :

[quote]
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)[/quote]

Edit:

Parece que deu certo deste jeito :

[code]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);
    }
}

}
[/code]

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