删除GUI中表中的数据

时间:2010-12-14 12:36:09

标签: java swing

我有疑问,当用户输入密钥时,如何从GUI中的jTable中删除所有数据? 感谢

4 个答案:

答案 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);
    }
});