希望大家多多改进,完善此程序
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTable;
import javax.swing.BorderFactory;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.table.DefaultTableModel;
import java.util.Vector;
import javax.swing.JOptionPane;
public class TableFrame extends JFrame{
private JPanel jp=null;
//设置标签
private JLabel[] lbl={new JLabel("学号"),new JLabel("姓名"),new JLabel("性别"),new JLabel("年龄")};
//设置文本框
public JTextField[] txt ={new JTextField(),new JTextField(),new JTextField(),new JTextField()};
//设置按钮
public JButton[] btn={new JButton("增加"),new JButton("删除"),new JButton("修改"),new JButton("查询"),new JButton("重置")};
//设置表格
public JTable table=null; //设置表格的数据
public String[] str1={"200913420125","summer","boy","20"};
private String[] str2={"200913420124","wulei","girl","19"};
private String[] str3={"200913420126","west","boy","20"};
private String[] str4={"200913420119","fish","girl","18"};
private String[] str5={"20091342017","youku","boy","21"};
public String[][] tempData1={str1,str2,str3,str4,str5}; //设置表头数据
private String[] tempTitle={"学号","姓名","性别","年龄"}; //设置表格的数据集合
private Vector v1=new Vector();
private Vector v2=new Vector();
private Vector v3=new Vector();
private Vector v4=new Vector();
private Vector v5=new Vector();
public Vector[] tempData2={v1,v2,v3,v4,v5};
public Vector data=new Vector(); //设置表头数据集合
public Vector title=new Vector(); public TableFrame(){
this.setTitle("JTable的DefaultTableModel");//设置标题
//设置面板
JPanel jp=(JPanel)this.getContentPane();
jp.setLayout(null);
jp.setBorder(BorderFactory.createTitledBorder("JTable的增删改查功能")); /*
 *设置布局
 */ //JLabel
for(int i=0;i<lbl.length;i++){
lbl[i].setBounds(10,20+i*50,40,26);
jp.add(lbl[i]);
} //JTextField
for(int i=0;i<txt.length;i++){
txt[i].setBounds(60,20+i*50,100,26);
jp.add(txt[i]);
} //JButton
for(int i=0;i<btn.length;i++){
btn[i].setBounds(10+i*85,240,80,26);
jp.add(btn[i]);
btn[i].addActionListener(new Press(this));
} //将数据装填到集合
for(int i=0;i<tempData2.length;i++){//这是行的循环
for(int j=0;j<str1.length;j++){//这是列的循环
tempData2[i].add(tempData1[i][j]);//将每一项数据都录入集合
}
data.add(tempData2[i]);
} //将表头数据添加到集合
for(int i=0;i<tempTitle.length;i++){
title.add(tempTitle[i]);
} //JTable
table=new JTable(data,title); //JScrollPane
JScrollPane jsp=new JScrollPane(table,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jsp.setBounds(180,20,250,200);
jp.add(jsp);//面板中加入滚动窗格 this.setSize(450,300);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
} public static void main(String[] args){
new TableFrame();
}
}
class Press implements ActionListener{
private TableFrame tf;
public Press(TableFrame tf){
this.tf=tf;
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==this.tf.btn[0]){//点击"增加"
add();
}
if(e.getSource()==this.tf.btn[1]){//点击"删除"
delete();
}
if(e.getSource()==this.tf.btn[2]){//点击"修改"
update();
}
if(e.getSource()==this.tf.btn[3]){//点击"查询"
select();
}
if(e.getSource()==this.tf.btn[4]){//点击"重置"
reset();
}
}
//重新绘制表格模型
public void refreshTable(){
DefaultTableModel dtm=new DefaultTableModel(this.tf.data,this.tf.title);
this.tf.table.setModel(dtm);
}
public Vector setVector(){
Vector v=new Vector();
v.add(this.tf.txt[0].getText().trim());
v.add(this.tf.txt[1].getText().trim());
v.add(this.tf.txt[2].getText().trim());
v.add(this.tf.txt[3].getText().trim()); return v;
}
public void add(){
Vector v=this.setVector();//取得增加的行
this.tf.data.add(v);//在TableFrame中Vector data 加入增加行
refreshTable();//刷新表格模型
this.tf.btn[1].setEnabled(true);//表中有数据行,将"删除"按钮激活
}
public void delete(){
int index=this.tf.table.getSelectedRow();//返回选中行的索引
if(index>0){
this.tf.data.remove(index);//在TableFrame中Vector data 加入删除该行数据
}else if(index==0){
this.tf.data.remove(index);//在TableFrame中Vector data 加入删除该行数据
this.tf.btn[1].setEnabled(false);//表格中的数据删除,"删除"按钮失效
}else{
JOptionPane.showMessageDialog(this.tf,"请选择您要准备删除的数据行!");
} refreshTable();
}
public void update(){
Vector v=this.setVector();//从文本框中取得需要修改的内容 int index=this.tf.table.getSelectedRow();//返回选中行的索引
if(index<0){
JOptionPane.showMessageDialog(this.tf,"请选择您要准备删除的数据行!");
}else{
this.tf.data.set(index,v);
refreshTable();//刷新表格模型
}
}
public void select(){
for(int i=0;i<this.tf.data.size();i++){
Vector v=(Vector)this.tf.data.get(i);
String sex=v.get(2).toString();
if(sex.equals("girl")){
this.tf.data.remove(i);
this.refreshTable();
}
}
}
public void reset(){
//所有文本设置为空
this.tf.txt[0].getText().trim();
this.tf.txt[1].getText().trim();
this.tf.txt[2].getText().trim();
this.tf.txt[3].getText().trim(); this.tf.setVisible(false);
new TableFrame();
}
}