2014-05-07 34 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));