1

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

有任何想法吗?

4

2 回答 2

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 两次。

于 2014-05-07T05:57:48.280 回答
2

我假设您有 7 列并按索引删除它们。当删除索引计数 -1 时,您不能使用大于大小的索引值。改成

jTable5.removeColumn(jTable5.getColumnModel().getColumn(6));
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5));
于 2014-05-07T05:59:24.807 回答