删除GUI中表中的数据

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

您可以设置新的空数据模型:

TableModel newModel = new DefaultTableModel(); jtable.setModel(newModel); 

您需要了解JTable是数据视图,而实际数据位于TableModel中 。 如果需要清除表格,则需要清除TableModel。

如果您的TableModel是AbstractTableModel ,则必须提供3种方法的实现:

 public int getRowCount(); public int getColumnCount(); public Object getValueAt(int row, int column); 

通常,实际数据对象存储在附加数据结构(例如列表)中,然后AbstractTableModel查询该列表。

 List objects = new ArrayList(); 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的后备数据结构。

如果您使用的是DefaultTableModel,那么您可以使用:

 model.setRowCount(0); 

这比创建新的DefaultTableModel更好。 创建新的TableModel会导致重新创建TableColumnModel,这意味着所有TableColumns将调整为默认值,并按照模型中列的顺序重新创建。 用户可能已更改这些属性,不应强制再次执行此操作。

如果您只是删除包含粒子值的某些行,则可以使用DefaultTableModel.removeRow(…)方法。 确保首先删除模型末尾的行并倒数至0。

addActionListener调用j_table方法

 button1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { j_table.removeAll(); data_model_table.setRowCount(0); } });