日期:2014-05-20  浏览次数:20746 次

窗体button未触发
其他的button功能都能实现,但惟独jb3(修改)没法实现。我在程序中加了一句测试的,结果也没有任何反应,求高手指点。其他一些类文件我就不贴了,只贴一个主页面上的代码。
代码如下
//本程序重点完成修改功能
package outerface;
import java.awt.*;
import javax.swing.*;
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.*;
import java.awt.event.*;
public class Test4 extends JFrame implements ActionListener{

//定义组件
JPanel jp1,jp2,jp3;
JLabel jl1;
JTable jt;
JButton jb1,jb2,jb3,jb4;
JScrollPane jsp;
JTextField jtf;
//将数据模型统一成一个成员变量
StuModel sm; 

//定义操作数据库需要的

//行数据 列数据
Vector rowData,columnNames; 
          
ResultSet rs=null;

//定义操作数据库需要的
PreparedStatement ps=null;
Connection ct=null;

public static void main(String[] args) {

         Test3 test3=new Test3();
}
   public Test4(){
   jp1=new JPanel();
   jtf=new JTextField(10);
   jl1=new JLabel("请输入一个名字");
   jb1=new JButton("查询");
       
  //为jb1注册监听器
      // jb1.setActionCommand(e);
   jb1.addActionListener(this);
       
   //把各组件加入到jp1中 (最上方)
   jp1.add(jl1);
   jp1.add(jtf);
   jp1.add(jb1);
   
   //为各按钮注册监听
   jp2=new JPanel();
   jb2=new JButton("添加");
   jb2.addActionListener(this);
   jb3=new JButton("修改");
           jb3.addActionListener(this);
   
           jb4=new JButton("删除");
   jb4.addActionListener(this);
   
   //把各组件加入到jp3中(最下方)
   jp2.add(jb2);
   jp2.add(jb3);
   jp2.add(jb4);
   
   //创建一个数据模型对象
    sm=new StuModel();
       
    //初始化JTable
    jt=new JTable(sm);
    
    //初始化jsp
    jsp=new JScrollPane(jt);
    
    //将jsp放入到jframe中去
    this.add(jsp);
    
    //将最上方的jp1放置border布局的北部,将最下方的jp2放置南部,中间部分放中部
    this.add(jp1,"North");
    this.add(jp2,"South");
    
    this.setTitle("这是一个简易的学生管理系统");
    this.setSize(400, 300);
    this.setLocation(300, 300);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    
}
   
@Override
        //对监听函数进行重写
public void actionPerformed(ActionEvent e) {
   
   //判断是哪个按钮被点击,如果是jb1发生即查询时的响应,则显示以下文字。
if(e.getSource()==jb1){   

System.out.println("用户想查询");
String name=this.jtf.getText().trim();//trim()方法用来消除空格
//写一个SQL语句
String sql="select * from stu where stuName='"+name+"'";

//构建新的数据模型类,并更新
 sm=new StuModel(sql);
//更新JTable
jt.setModel(sm);
}

//当用户添加数据时,jb2被触发
else if(e.getSource()==jb2){
StuaddDialog sa=new StuaddDialog(this,"添加学生",true);

//构建新的数据模型类,并更新
 sm=new StuModel();
//更新JTable
jt.setModel(sm);
}

//当用户修改数据时,jb3被触发。(此处有误,无法实现修改功能)
else if(e.getSource()==jb3){
//测试jb3是否被触发
System.out.println("wowjo");
//用户修改数据,首先获取行数
int rowNum=this.jt.getSelectedRow();
if(rowNum==-1){
JOptionPane.showMessageDialog(this, "请选择一行");
return;
}
//否则,显示修改对话框
new StuUpdDialog(this,"修改学生",true,sm,rowNum);
//构建新的数据模型类,并更新
 sm=new StuModel();
//更新JTable
jt.setModel(sm);
}

//当用户删除数据时,判断jb4是否被触发。
else if(e.getSource()==jb4){

//getSelectRow()方法会返回选中的行
int rowNum=this.jt.getSelectedRow();
if(rowNum==-1){
//如果没有选中,则弹出提示
JOptionPane.showMessageDialog(this, "请选择一行");
return;
}
//得到学生编号
String stuId=(String)sm.getValueAt(rowNum, 0);
//System.out.println("id="+stuId);

//连接数据库,完成删除数据
try{

//获取数据库驱动
Class.forName("com.mysql.jdbc.Driver");

//获取连接
ct=DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "880104");
    
//预编译SQL语句