我有疑问,当用户输入密钥时,如何从GUI中的jTable中删除所有数据? 感谢
答案 0 :(得分:2)
您可以设置新的空数据模型:
TableModel newModel = new DefaultTableModel();
jtable.setModel(newModel);
答案 1 :(得分:2)
您需要了解JTable是数据的视图,而实际数据位于TableModel。如果您需要清除表格,那么您需要清除TableModel。
如果您的TableModel是AbstractTableModel,则必须提供3种方法的实现:
public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int column);
实际数据对象经常存储在附加数据结构(例如列表)中,然后是AbstractTableModel查询列表。
List<DomainObject> objects = new ArrayList<DomainObject>();
public int getRowCount() { return objects.size(); }
// How many columns you make depends on what features of the objects you're exposing.
public int getColumnCount() { return NUMBER_OF_COLUMNS; }
public Object getValueAt(int row, int column) {
DomainObject object = objects.get(row);
... // pull out the property based on the column they pass in
}
// By exposing this method, you can allow your Controller code to reach into this model
// and delete all the rows.
public void clear() {
objects.clear()
}
HH建议您更改JTable的模型以引用空模型,这实际上将清除表格。但是,列等不会被正确保留(新的DefaultTableModel不知道这些列名是什么)。
在您研究了视图和模型如何更合适之后,请查看GlazedLists。它允许以非常强大的方式创建TableModel,它提供数据的动态视图,例如通过过滤掉与某些条件不匹配的行。
总结一下 - 你不会在JTable上找到一个清除其内容的方法,因为这是TableModel的工作。您需要某种方法来确保清除TableModel的后备数据结构。
答案 2 :(得分:2)
如果您使用的是DefaultTableModel,那么您可以使用:
model.setRowCount(0);
这比创建新的DefaultTableModel更好。创建新的TableModel会导致重新创建TableColumnModel,这意味着所有TableColumns将调整为默认值,并按照模型中列的顺序重新创建。用户可能已更改了这些属性,因此不应强制它再次执行此操作。
如果您只是删除包含粒子值的某些行,则可以使用DefaultTableModel.removeRow(...)方法。确保首先删除模型末尾的行并倒数至0.
答案 3 :(得分:0)
在removeAll
j_table
方法的addActionListener
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
j_table.removeAll();
data_model_table.setRowCount(0);
}
});