【问题标题】:How can I remove multiple columns from Jtable in Java?如何从 Java 中的 Jtable 中删除多个列?
【发布时间】:2014-06-23 22:54:27
【问题描述】:

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

有什么想法吗?

【问题讨论】:

  • 我假设在您的表中总共有 6 列,因此当您删除第 5 列之后,如果您当时尝试获取第 6 列,则会触发错误,因为现在有 5 列
  • 1) 对代码块使用一致且符合逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。 2) 为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。
  • 没错,我尝试先删除第 6 列,然后删除第 5 列,效果很好。谢谢
  • 提示:添加@Swapnil(或重要的@)以通知新评论的人。
  • 请尝试 getColumnIndex(Object Identifier) 获取列索引并使用列索引删除列。

标签: java swing jtable tablecolumn


【解决方案1】:

首先,你应该利用异常,不要只显示“错误”,显示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));
    

    【讨论】:

      猜你喜欢
      • 2012-12-01
      • 2016-12-11
      • 1970-01-01
      • 2016-11-28
      • 2013-11-14
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 2014-08-28
      相关资源
      最近更新 更多