有沒有人有一個很好的例子來說明如何使用自定義表模型添加/刪除行從JTable?我似乎遇到的問題是如何在添加或刪除項目時讓表格保持更新。JTable添加/刪除行到自定義表模型(更新表顯示)
這裏真正簡單的想法是在我的表格上方有一個添加和刪除按鈕,允許用戶隨時更改表格。
有沒有人有一個很好的例子來說明如何使用自定義表模型添加/刪除行從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並調用表tableChanged
方法。
「自定義表模型」是指「擴展DefaultTableModel」還是「擴展AbstractTableModel」? – trashgod 2010-08-16 15:03:26