我需要从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(),我应该使用这个吗?
有什么想法吗?
答案 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));