JTable添加/删除行到自定义表模型(更新表显示)

有没有人有一个很好的例子,说明如何使用自定义表模型从JTable添加/删除行? 我似乎遇到的问题是当我添加或删除项目时如何让表不断更新。

这里真正简单的想法是在我的桌子上方有一个添加和删除按钮,允许用户动态更改表格。

以下是添加行的示例:

 import java.awt.BorderLayout; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.util.Vector; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.JViewport; import javax.swing.SwingUtilities; import javax.swing.table.AbstractTableModel; public class RowAdder extends JFrame { final SimpleModel tableData = new SimpleModel(); JTable table = new JTable(tableData); public static void main(String[] args) { RowAdder ra = new RowAdder(); ra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ra.setSize(400, 300); ra.setVisible(true); } public RowAdder() { final JTextField textField = new JTextField(); setLayout(new BorderLayout()); add(new JScrollPane(table), BorderLayout.CENTER); textField.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { tableData.addText(textField.getText()); textField.setText(""); } }); add(textField, BorderLayout.SOUTH); } } class SimpleModel extends AbstractTableModel { Vector textData = new Vector(); public void addText(String text) { textData.addElement(text); fireTableDataChanged(); } public int getRowCount() { return textData.size(); } public int getColumnCount() { return 3; } public Object getValueAt(int row, int column) { return textData.elementAt(row); } } 

以上参考文献: http : //www.java2s.com/Tutorial/Java/0240__Swing/AddrowstoaTable.htm

查看本教程关于JTable:

http://download.oracle.com/javase/tutorial/uiswing/components/table.html

专门用于表模型检查:

http://download.oracle.com/javase/tutorial/uiswing/components/table.html#data

我认为本教程应该回答你的所有问题。

您必须通知JTable对象基础表模型的更改。 该表不是观察模型而是等待事件。

在每次更改(或一组更改)之后,创建一个TableModelEvent并调用tables tableChanged方法。