簡體   English   中英

如何刪除jtable中的所有行?

[英]how to delete all rows in jtable?

我有一個問題要刪除表中的所有行,我有一個具有jtable的Jpanel,當我選擇該行時,它將顯示相應的行值,並且當我在同一面板上單擊另一個按鈕時,它將重新加載表,這里是問題,我例外

Exception in thread "AWT-EventQueue-0"

    java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
        at java.util.Vector.elementAt(Unknown Source)
        at javax.swing.table.DefaultTableModel.getValueAt(Unknown Source)
        at javax.swing.JTable.getValueAt(Unknown Source)
        at Testsample$16.valueChanged(Testsample.java:1516) 

我幾乎使用所有方法刪除表中的行,現在我使用此方法

while (table.getRowCount() > 0) {
                    ((DefaultTableModel) table.getModel()).removeRow(0);
                } 

注意:當所有控件都在同一示例中時,我在此示例應用程序中使用兩個面板,這一切正常,如果我在第二個面板中設置表格,則拋出上述異常,任何想法如何解決此問題

試試這個代碼。

DefaultTableModel dm = (DefaultTableModel)table.getModel();
dm.getDataVector().removeAllElements();

您看到的異常來自Swing線程(AWT-EventQueue-0)。 發生異常是因為JTable在其他線程上修改DefaultTableModel的同時繪制了自己(在Swing線程上)。

不要那樣做! 對表模型的所有更改都必須在Swing線程上進行。

參見Swing Threads中的最后一個詞

使用EventQueue.invokeLater(new Runnable() {...}); 或類似的東西。

這是我的方法:

DefaultTableModel model=(DefaultTableModel)table.getModel();
            int rc= model.getRowCount();
            for(int i = 0;i<rc;i++){
                model.removeRow(0);
            }   

我用這個代碼

dtm_vendor = new DefaultTableModel();
jTable_vendor.setModel(dtm_vendor);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM