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

问题描述 投票:0回答:2

我需要从

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

有什么想法吗?

java swing jtable tablecolumn
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两次。


2
投票

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

jTable5.removeColumn(jTable5.getColumnModel().getColumn(6));
jTable5.removeColumn(jTable5.getColumnModel().getColumn(5));
© www.soinside.com 2019 - 2024. All rights reserved.