我写的一个简单例子,你试试看吧。
//: TableAddRow.javaimport javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.util.ArrayList;public class TableAddRow extends JFrame {
JButton jb = new JButton("Add a row");
JTable table = new JTable(new DataModel());
// The TableModel controls all the data:
class DataModel extends AbstractTableModel {
ArrayList al = new ArrayList();
public DataModel() {
String[] row0 = {"one", "two", "three"};
al.add(row0);
}
public int getColumnCount() {
return ((String[])(al.get(0))).length;
}
public int getRowCount() {
return al.size();
}
public Object getValueAt(int row, int col) {
return ((String[])(al.get(row)))[col];
}
public void setValueAt(Object val, int row, int col) {
((String[])al.get(row))[col]=(String)val;
fireTableDataChanged();
}
public boolean isCellEditable(int row, int col) {
return true;
}
} class AddRowL implements ActionListener {
public void actionPerformed(ActionEvent e) {
DataModel dm = (DataModel)table.getModel();
String[] newRow = {"","",""};
dm.al.add(newRow);
dm.fireTableDataChanged();
}
}; public TableAddRow() {
Container cp = getContentPane();
jb.addActionListener(new AddRowL());
cp.add(new JScrollPane(table));
cp.add(BorderLayout.SOUTH, jb);
setSize(300,300);
show();
}
public static void main(String[] args) {
TableAddRow table = new TableAddRow(); table.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
System.exit( 0 );
}
});
}
}
//: TableAddRow.javaimport javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
import java.util.ArrayList;public class TableAddRow extends JFrame {
JButton jb = new JButton("Add a row");
JTable table = new JTable(new DataModel());
// The TableModel controls all the data:
class DataModel extends AbstractTableModel {
ArrayList al = new ArrayList();
public DataModel() {
String[] row0 = {"one", "two", "three"};
al.add(row0);
}
public int getColumnCount() {
return ((String[])(al.get(0))).length;
}
public int getRowCount() {
return al.size();
}
public Object getValueAt(int row, int col) {
return ((String[])(al.get(row)))[col];
}
public void setValueAt(Object val, int row, int col) {
((String[])al.get(row))[col]=(String)val;
fireTableDataChanged();
}
public boolean isCellEditable(int row, int col) {
return true;
}
} class AddRowL implements ActionListener {
public void actionPerformed(ActionEvent e) {
DataModel dm = (DataModel)table.getModel();
String[] newRow = {"","",""};
dm.al.add(newRow);
dm.fireTableDataChanged();
}
}; public TableAddRow() {
Container cp = getContentPane();
jb.addActionListener(new AddRowL());
cp.add(new JScrollPane(table));
cp.add(BorderLayout.SOUTH, jb);
setSize(300,300);
show();
}
public static void main(String[] args) {
TableAddRow table = new TableAddRow(); table.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
System.exit( 0 );
}
});
}
}
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;public class AddRemoveCells implements ActionListener
{
JTable table = null;
DefaultTableModel defaultModel = null; public AddRemoveCells()
{
JFrame f = new JFrame();
String[] name = {"字段 1","字段 2","字段 3","字段 4","字段 5"};
String[][] data = new String[5][5];
int value =1;
for(int i=0; i<data.length; i++)
{
for(int j=0; j<data[i].length ; j++)
data[i][j] = String.valueOf(value++);
}
defaultModel = new DefaultTableModel(data,name);
table=new JTable(defaultModel);
table.setPreferredScrollableViewportSize(new Dimension(400, 80));
JScrollPane s = new JScrollPane(table);
JPanel panel = new JPanel();
JButton b = new JButton("增加行");
panel.add(b);
b.addActionListener(this);
b = new JButton("增加列");
panel.add(b);
b.addActionListener(this);
b = new JButton("删除行");
panel.add(b);
b.addActionListener(this);
b = new JButton("删除列");
panel.add(b);
b.addActionListener(this);
Container contentPane = f.getContentPane();
contentPane.add(panel, BorderLayout.NORTH);
contentPane.add(s, BorderLayout.CENTER);
f.setTitle("AddRemoveCells");
f.pack();
f.setVisible(true);
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand().equals("增加列"))
defaultModel.addColumn("增加列");
if(e.getActionCommand().equals("增加行"))
defaultModel.addRow(new Vector());
if(e.getActionCommand().equals("删除列"))
{
int columncount = defaultModel.getColumnCount()-1;
if(columncount >= 0)
{
TableColumnModel columnModel = table.getColumnModel();
TableColumn tableColumn = columnModel.getColumn(columncount);
columnModel.removeColumn(tableColumn);
defaultModel.setColumnCount(columncount);
}
}
if(e.getActionCommand().equals("删除行"))
{
int rowcount = defaultModel.getRowCount()-1;
if(rowcount >= 0)
{
defaultModel.removeRow(rowcount);
defaultModel.setRowCount(rowcount);
}
}
table.revalidate();
}
public static void main(String args[]) {
new AddRemoveCells();
}
}编译即可运行
DefaultTableModel dtm=null;
jScrollPane1 = new javax.swing.JScrollPane(jTable1);
jTable1 = new JTable(dtm);
Object [][] strobject=new Object [][] {
{null, null, null, null, null}
};
Object [] strobjecttmp=new String [] {
"名称", "数量", "单价", "金额", "领用人签名"
};
dtm=new DefaultTableModel(strobject,strobjecttmp);
dtm.addRow(new Vector());
jTable1.revalidate();