use*_*041 27 java swing jtable
我需要删除JTable中的所有行.
我尝试了以下两种方法:
/**
* Removes all the rows in the table
*/
public void clearTable()
{
DefaultTableModel dm = (DefaultTableModel) getModel();
dm.getDataVector().removeAllElements();
revalidate();
}
Run Code Online (Sandbox Code Playgroud)
和
((DefaultTableModel)table.getModel()).setNumRows(0);
Run Code Online (Sandbox Code Playgroud)
两者都不会删除所有行.有任何想法吗?
Fel*_*ype 61
为此,我们可以使用DefaultTableModel.setRowCount(int),参考Java的文档:
public void setRowCount(int rowCount)
设置模型中的行数.如果新大小大于当前大小,则将新行添加到模型的末尾如果新大小小于当前大小,则丢弃索引rowCount和更大的所有行.
这意味着,我们可以清除这样的表格:
DefaultTableModel dtm = (DefaultTableModel) jtMyTable.getModel();
dtm.setRowCount(0);
Run Code Online (Sandbox Code Playgroud)
现在,关于"java如何丢弃那些行?",我相信它最终会调用一些类似C的free(void*),或者它可能只删除对该内存区域的所有引用并留给GC关注,有关此功能如何在内部工作的文档不太清楚.
Mih*_*hai 36
以下代码对我有用:
DefaultTableModel dm = (DefaultTableModel) getModel();
int rowCount = dm.getRowCount();
//Remove rows one by one from the end of the table
for (int i = rowCount - 1; i >= 0; i--) {
dm.removeRow(i);
}
Run Code Online (Sandbox Code Playgroud)
jam*_*ond 21
这样的事情应该有效
DefaultTableModel model = (DefaultTableModel)this.getModel();
int rows = model.getRowCount();
for(int i = rows - 1; i >=0; i--)
{
model.removeRow(i);
}
Run Code Online (Sandbox Code Playgroud)
小智 10
阅读DefaultTableModel的API - setRowCount方法支持一次删除/丢弃所有行...
((DefaultTableModel)myTable.getModel()).setRowCount(0);
小智 6
从JTable中删除所有行的最简单方法,只需使用此方法...
tablemodel.getDataVector().removeAllElements();
tablemodel.fireTableDataChanged();
Run Code Online (Sandbox Code Playgroud)
tablemodel是为表添加新行而创建的模型.这是删除所有行的最短,最快的方法,因为如果你有几千行呢?循环?
小智 5
try{
DefaultTableModel dtm = (DefaultTableModel) jTable2.getModel();
dtm.setNumRows(0);
}catch(Exception e){
}
Run Code Online (Sandbox Code Playgroud)