如何从Java中删除Jtable中的多个列?

时间:2014-05-07 05:51:42

标签: java swing jtable tablecolumn

我需要从Jtable中删除2列。

如果我这样做:

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(),我应该使用这个吗?

有什么想法吗?

2 个答案:

答案 0 :(得分: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次。

答案 1 :(得分:2)

我假设您有7列并通过索引删除它们。当删除索引计数-1时,则不能使用高于size的索引值。改为

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