我需要从
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(),我应该使用这个吗?
有什么想法吗?
首先,你应该利用异常,不要只显示“错误”,显示
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两次。
我假设您有 7 列并通过索引删除它们。当删除索引计数-1时,您不能使用大于大小的索引值。更改为
jTable5.removeColumn(jTable5.getColumnModel().getColumn(6));
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5));