我不知道该怎么做。我正在创建一个应用程序。我需要使用表,所以我使用JTable。但我有很多问题。 它似乎工作,但当我尝试删除列时,此列消失(仅在GUI中),但所有信息仍然存在。 columncount也不会改变 我搜索并尝试了很多不同的代码,但没有任何改变。
public void addTblCol(JTable table,String name) {
DefaultTableModel model = (DefaultTableModel)table.getModel();
TableColumn col = new TableColumn(model.getColumnCount());
col.setHeaderValue(name);
table.addColumn(col);
model.addColumn(name);
this.realColCnt++;
};
public void delTblCol(JTable table,int index) {
DefaultTableModel model = (DefaultTableModel)table.getModel();
TableColumn col = table.getColumnModel().getColumn(index);
table.removeColumn(col);
table.revalidate();
this.realColCnt--;
};
答案 0 :(得分:6)
DefaultTableModel
支持setColumnCount()
方法,该方法实际上只允许您从模型末尾删除列。
如果要从模型中间删除列,则需要:
DefaultTableModel
并创建自己的removeColumn(int column)
方法。 Vector.remove(int)
方法删除行的列。 fireTableStructureChanged()
方法告诉表已删除列,以便重新绘制表。答案 1 :(得分:3)
与您的问题相关的一些一般信息。
public void removeColumn(TableColumn aColumn)
的{{3}}明确指出:
从此JTable的列数组中删除aColumn。 注意:此方法不会从模型中删除数据列;它只是删除了负责显示它的TableColumn。
所以你所经历的行为是可以预期的。如果您尝试从模型中删除数据,那么您将不得不更改TableModel的数据和ColumnModel。再次提供更具体的帮助,您需要告诉我们更多信息。
考虑创建自定义表模型,并为其提供removeColumn(...)
方法,从单个列中删除所有数据,然后调用相应的fireXXX(...)
方法。
修改强>
您在评论中说明:
THx的答案,我是新手。这个编程是为了研究我已经浪费了两天来创建它。现在再次有问题。什么是最简单的方法?
这一切都取决于你想做什么。如果您只想更改显示,请在执行时删除列并保留数据。
答案 2 :(得分:0)
答案 3 :(得分:0)
jTable1.removeColumn(jTable1.getColumnModel().getColumn(0));