Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从自定义AbstractTableModel向JTable添加/删除更多列_Java_Swing_Jtable_Tablemodel_Abstracttablemodel - Fatal编程技术网

Java 从自定义AbstractTableModel向JTable添加/删除更多列

Java 从自定义AbstractTableModel向JTable添加/删除更多列,java,swing,jtable,tablemodel,abstracttablemodel,Java,Swing,Jtable,Tablemodel,Abstracttablemodel,我有一个包含HashMap元素的向量。 我想把它放在一个表中,每个HashTable值必须位于具有HashTable键列标题的列中。 所以键为“key1”的元素必须出现在名为“key1”的表列上 当我尝试使用setHash()函数添加/删除表中的列时,问题就出现了。 我传递一个包含更多/更少元素的字符串[],当这个函数运行时,fireTableStructureChanged()java疯狂地抛出 我不明白问题出在哪里。你能帮我吗 表模型的实现如下所示: public class Resizab

我有一个包含HashMap元素的向量。 我想把它放在一个表中,每个HashTable值必须位于具有HashTable键列标题的列中。 所以键为“key1”的元素必须出现在名为“key1”的表列上

当我尝试使用
setHash()
函数添加/删除表中的列时,问题就出现了。 我传递一个包含更多/更少元素的字符串[],当这个函数运行时,
fireTableStructureChanged()
java疯狂地抛出

我不明白问题出在哪里。你能帮我吗

表模型的实现如下所示:

public class ResizableTableModel extends AbstractTableModel {
  protected DataSource src;
  protected String[] hash;

  //......................

  public void setHash(String[] hash) {
        this.hash = hash;
        fireTableStructureChanged();  // THROWS!
  }

  public ArrayList getData() { return src.getData(); }
  public int getColumnCount() { return hash.length; }
  public int getRowCount() { return getData() == null ? 0 : getData().size(); }
  public String getColumnName(int col) { return hash[col]; }
  public boolean isCellEditable(int row, int col) { return true; }
  public Object getValueAt(int row, int col) {
    try {
      return ((HashMap) getData().get(row)).get(hash[col]);
    } catch (Exception e) {
      return null;
    }
  }
  public void setValueAt(Object obj, int row, int col) {
    try {
      //...................
    } catch (Exception e) {}
    fireTableDataChanged();
  }
}
  • 不希望从XxxTableModel中删除列

  • 仅删除视图,数据仍为空


HashMap缺少索引,必须使用列表代替标题。我不知道问题出在哪里。任何人都很难找出问题所在,因为您的代码不完整,而且您没有告诉我们您遇到了什么异常,也没有告诉我们发生在哪一行。考虑发布一个但<代码> jTabe>代码>是从<代码> XXXTabLimoDele>代码>创建的。如果不替换为新的
JTable
?@变色龙,则无法从
xxxttablemodel
完全“重新生成”
JTable
?@这不是基本属性,默认情况下没有问题添加/删除/修改行/列/单元格,我建议从DefaultTableModel开始,这样可以减少外部的影响,所有方法都可以从JTable访问,与DeafultTableModel相同,需要使用premature数组或Vector,但与HashMap没有区别,AbstractTableModel的使用也需要对TableModel和used数组有深入的了解,将这种麻烦减少到所需的最低限度,然后从DefaultTableModel切换到AbstractTableModel(此外还有几行代码)