2014-05-07 65 views
1

我需要從Jtable中刪除2列。如何從Java中的Jtable中刪除多個列?

如果我做的:

try { 
jTable5.setModel(dtm); 
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5)); 
jTable5.removeColumn(jTable5.getColumnModel().getColumn(6)); 
jTable5.setVisible(true); 
} 
catch (Exception e){ 
JOptionPane.showMessageDialog(rootPane, "Error"); 
} 

然後 「錯誤」 顯示。

但如果我這樣做:不顯示

try { 
jTable5.setModel(dtm); 
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5)); 
jTable5.setVisible(true); 
} 
catch (Exception e){ 
JOptionPane.showMessageDialog(rootPane, "Error"); 
} 

錯誤和表是否正確設置爲可見。看來我不能使用兩次removeColumn()方法從模型中刪除兩列。

我注意到有一個removeColumnSelectionInterval(),我應該使用這個嗎?

任何想法?

+0

我假設您的表中總共有6列:由於這時候你之後刪除5列,如果你試圖在那個時候它觸發錯誤得到第6列,因爲現在已經有5個colums – Swapnil

+0

1)對代碼塊使用一致的邏輯縮進。代碼的縮進旨在幫助人們理解程序流程。 2)爲了更快地獲得更好的幫助,請發佈[MCVE](http://stackoverflow.com/help/mcve)(最小完整和可驗證示例)。 –

+0

這是正確的,我試圖刪除列6,然後列5,它工作正常。謝謝 – user3562926

回答

2

首先,你應該使用異常的,不只是顯示 「錯誤」,顯示e.getMessage()

try { 
jTable5.setModel(dtm); 
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5)); 
jTable5.removeColumn(jTable5.getColumnModel().getColumn(6)); 
jTable5.setVisible(true); 
} 
catch (Exception e){ 
JOptionPane.showMessageDialog(rootPane, "Error " + e.getMessage()); 
e.printStackTrace();//shows more detailed stack trace 
} 

,並使用e.printStackTrace() ...

第二,我認爲當妳刪除第一列,然後移動其他列, 因此,當您刪除第5列時,則沒有第6列,因爲它已被移位,現在也是5列,這就是導致錯誤的原因,這就是瘋狂的猜測是使用

jTable5.removeColumn(jTable5.getColumnModel().getColumn(5)); 
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5)); 

是的,刪除5次兩次。

+0

+1,你有我的投票在*「並使用'e.printStackTrace()'...」* –

2

我假設你有7列並刪除它們的索引。當刪除索引計數-1時,則不能使用高於大小的索引值。更改爲

jTable5.removeColumn(jTable5.getColumnModel().getColumn(6)); 
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5));