目录
班级添加的界面实现
创建班级的实体类
在org.xingyun.dao 包下 编写 ClassDao
创建 AddStudentClassFrm 添加班级页面
注意创建成 JInternalFrame 类型
给控件起个名字
注释掉main方法
给提交按钮绑定事件
回到 MainFrm.java 给添加班级按钮绑定事件
启动测试
班级列表页面的制作
创建 ManageClassFrm 注意创建成 JInternalFrame
布局设置成绝对定位
添加滚动容器
滚动容器中,添加 表格
设置表头
给各个组件起个名字
回到 MainFrm.java 给班级列表按钮绑定事件
在 ClassDao 里面提供查询的方法
当 ManageClassFrm 页面打开后,查询班级信息展示到表格中
在 ManageClassFrm 提供一个方法,展示班级数据
在 ManageClassFrm 的构造方法中调用 setTable()方法执行
测试
给查询按钮绑定事件
继续制作 ManageClassFrm 页面 加上删除 修改功能
给表格中的每一行数据绑定事件
测试
给确认删除按钮,添加事件
编写ClassDao 提供删除操作
编写代码进行删除
给确认修改按钮添加点击事件
编写ClassDao提供修改的方法
班级添加的界面实现
创建班级的实体类
public class StudentClass { private int id; private String name; private String info; //get set 方法自己补上 }
在org.xingyun.dao 包下 编写 ClassDao
public class ClassDao { // 添加班级 public boolean addClass(StudentClass scl) { try { Connection con = JDBCUtils.getConnection(); String sql = "insert into s_class values(null,?,?)"; java.sql.PreparedStatement preparedStatement = con.prepareStatement(sql); preparedStatement.setString(1, scl.getName()); preparedStatement.setString(2, scl.getInfo()); if (preparedStatement.executeUpdate() > 0) { return true; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; } }
创建 AddStudentClassFrm 添加班级页面
注意创建成 JInternalFrame 类型
页面制作,自己拖一下
给控件起个名字
classNameTextField 班级名称
classInfoTextArea 班级信息 addClassBtnNewButton 按钮
注释掉main方法
给提交按钮绑定事件
//添加班级按钮的事件绑定 addClassBtnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //抽取个方法 addClass(e); } });
// 添加班级 protected void addClass(ActionEvent e) { // TODO Auto-generated method stub // TODO Auto-generated method stub String className = classNameTextField.getText().toString(); String classInfo = classInfoTextArea.getText().toString(); if (StringUtil.isEmpty(className)) { JOptionPane.showMessageDialog(this, "班级名称不能为空!"); return; } StudentClass scl = new StudentClass(); scl.setName(className); scl.setInfo(classInfo); ClassDao classDao = new ClassDao(); if (classDao.addClass(scl)) { JOptionPane.showMessageDialog(this, "班级添加成功!"); } else { JOptionPane.showMessageDialog(this, "班级添加失败!"); } // 添加完后,清空表单 classNameTextField.setText(""); classInfoTextArea.setText(""); }
回到 MainFrm.java 给添加班级按钮绑定事件
//添加班级 menuItem_4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { openAddClassFrm(e); } });
//打开添加班级页面 protected void openAddClassFrm(ActionEvent e) { // TODO Auto-generated method stub AddStudentClassFrm addStudentClassFrm = new AddStudentClassFrm(); addStudentClassFrm.setVisible(true); desktopPane.add(addStudentClassFrm); }
启动测试
班级列表页面的制作
创建 ManageClassFrm 注意创建成 JInternalFrame
注释掉main方法
布局设置成绝对定位
添加滚动容器
滚动容器中,添加 表格
设置表头
给各个组件起个名字
classListTable;
selectBtnNewButton
classNametextField;
回到 MainFrm.java 给班级列表按钮绑定事件
//班级列表绑定事件 menuItem_5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //抽个方法 openManageClassFrm(e); } });
// 打开班级列表页面 protected void openManageClassFrm(ActionEvent e) { // TODO Auto-generated method stub ManageClassFrm manageClassFrm = new ManageClassFrm(); manageClassFrm.setVisible(true); desktopPane.add(manageClassFrm); }
在 ClassDao 里面提供查询的方法
public List<StudentClass> getClassList(StudentClass studentClass) { List<StudentClass> retList = new ArrayList<StudentClass>(); String sqlString = "select * from s_class"; if (!StringUtil.isEmpty(studentClass.getName())) { sqlString += " where name like '%" + studentClass.getName() + "%'"; } try { Connection con = JDBCUtils.getConnection(); PreparedStatement preparedStatement = con.prepareStatement(sqlString); ResultSet executeQuery = preparedStatement.executeQuery(); while (executeQuery.next()) { StudentClass sc = new StudentClass(); sc.setId(executeQuery.getInt("id")); sc.setName(executeQuery.getString("name")); sc.setInfo(executeQuery.getString("info")); retList.add(sc); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return retList; }
当 ManageClassFrm 页面打开后,查询班级信息展示到表格中
在 ManageClassFrm 提供一个方法,展示班级数据
//给表格填充数据 private void setTable(StudentClass studentClass){ //获取表格控件模型 DefaultTableModel dft = (DefaultTableModel) classListTable.getModel(); dft.setRowCount(0); //清空表格数据 ClassDao classDao = new ClassDao(); List<StudentClass> classList = classDao.getClassList(studentClass); //遍历集合 for (StudentClass sc : classList) { Vector v = new Vector(); v.add(sc.getId()); v.add(sc.getName()); v.add(sc.getInfo()); //把数据添加 表格中 dft.addRow(v); } }
在 ManageClassFrm 的构造方法中调用 setTable()方法执行
测试
给查询按钮绑定事件
//查询按钮绑定事件 selectBtnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //获取输入框输入的内容 String className = classNametextField.getText().toString().trim(); StudentClass studentClass = new StudentClass(); studentClass.setName(className); //调用方法 setTable(studentClass); } });
继续制作 ManageClassFrm 页面 加上删除 修改功能
给组件起个名字
editClassNameTextField
okEditButton
okDeleteBtnNewButton
editClassInfoTextArea
给表格中的每一行数据绑定事件
// 给表格中每一行绑定鼠标点击事件 classListTable.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { // 弹框个框测试下 //JOptionPane.showMessageDialog(null, "点击了"); selectedTableRow(e); } });
//选中的哪一行,把数据展示到编辑框里面 protected void selectedTableRow(MouseEvent me) { // TODO Auto-generated method stub DefaultTableModel dft = (DefaultTableModel) classListTable.getModel(); editClassNameTextField.setText(dft.getValueAt(classListTable.getSelectedRow(), 1).toString().trim()); editClassInfoTextArea.setText(dft.getValueAt(classListTable.getSelectedRow(), 2).toString().trim()); }
测试
给确认删除按钮,添加事件
编写ClassDao 提供删除操作
public boolean delete(int id) { String sql = "delete from s_class where id=?"; try { Connection con = JDBCUtils.getConnection(); PreparedStatement preparedStatement = con.prepareStatement(sql); preparedStatement.setInt(1, id); if (preparedStatement.executeUpdate() > 0) { return true; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; }
编写代码进行删除
//删除按钮,绑定事件 okDeleteBtnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //抽取一个删除方法 deleteClassAct(e); } });
// 删除班级操作 protected void deleteClassAct(ActionEvent ae) { // TODO Auto-generated method stub if (JOptionPane.showConfirmDialog(this, "您确定删除么?") != JOptionPane.OK_OPTION) { return; } // 获取选中行的索引 int index = classListTable.getSelectedRow(); if (index == -1) { JOptionPane.showMessageDialog(this, "请选中要删除的数据!"); return; } //获取表格模型 DefaultTableModel dft = (DefaultTableModel) classListTable.getModel(); // 获取选中行的第一列 int id = Integer.parseInt(dft.getValueAt(classListTable.getSelectedRow(), 0).toString()); ClassDao classDao = new ClassDao(); if (classDao.delete(id)) { JOptionPane.showMessageDialog(this, "删除成功!"); } else { JOptionPane.showMessageDialog(this, "删除失败!"); } //查询数据 setTable(new StudentClass()); }
给确认修改按钮添加点击事件
编写ClassDao提供修改的方法
public boolean update(StudentClass sc) { String sql = "update s_class set name=?, info=? where id=?"; try { Connection con = JDBCUtils.getConnection(); PreparedStatement preparedStatement = con.prepareStatement(sql); preparedStatement.setString(1, sc.getName()); preparedStatement.setString(2, sc.getInfo()); preparedStatement.setInt(3, sc.getId()); if (preparedStatement.executeUpdate() > 0) { return true; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; }
// 确认修改按钮绑定事件 okEditButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { submitEditAct(e); } });
//修改操作 protected void submitEditAct(ActionEvent ae) { // TODO Auto-generated method stub ClassDao classDao = new ClassDao(); int index = classListTable.getSelectedRow(); if(index == -1){ JOptionPane.showMessageDialog(this, "请选中要修改的数据!"); return; } DefaultTableModel dft = (DefaultTableModel) classListTable.getModel(); String className = dft.getValueAt(classListTable.getSelectedRow(), 1).toString(); String classInfo = dft.getValueAt(classListTable.getSelectedRow(), 2).toString(); String editClassName = editClassNameTextField.getText().toString(); String editClassInfo = editClassInfoTextArea.getText().toString(); if(StringUtil.isEmpty(editClassName)){ JOptionPane.showMessageDialog(this, "请填写要修改的名称!"); return; } if(className.equals(editClassName) && classInfo.equals(editClassInfo)){ JOptionPane.showMessageDialog(this, "您还没有做任何修改!"); return; } int id = Integer.parseInt(dft.getValueAt(classListTable.getSelectedRow(), 0).toString()); StudentClass sc = new StudentClass(); sc.setId(id); sc.setName(editClassName); sc.setInfo(editClassInfo); if(classDao.update(sc)){ JOptionPane.showMessageDialog(this, "更新成功!"); }else{ JOptionPane.showMessageDialog(this, "更新失败!"); } //修改后,再次查询数据 setTable(new StudentClass()); }