1、修改窗体

2、在StudentDao中增加修改学生信息的方法

	/**
* 修改的方法
*
* @param student
* @return
* @throws SQLException
*/
public boolean update(Student student) throws SQLException {
DbUtil dbUtil = new DbUtil();
String sql = "update tb_student set name='" + student.getName() + "',sno='"
+ student.getSno() + "',sex='" + student.getSex()
+ "',classname='" + student.getClassName() + "' where id ='"
+ student.getId() + "'";
// 在控制台打印sql语句用于检查
System.out.println(sql);
// 处理并返回
return dbUtil.execute(sql);
}

  

3、在StudentService中增加修改服务

	/**
* 修改学生信息服务
*
* @param student
* @return
* @throws SQLException
*/
public boolean editStudent(Student student) throws SQLException {
StudentDao studentDao = new StudentDao();
return studentDao.update(student);
}

4、给窗体中的表格添加点击事件

表格单击完整代码

		table.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int row = table.getSelectedRow();
textField_1.setText(table.getValueAt(row, 1) + "");
textField_2.setText(table.getValueAt(row, 2) + "");
String sex = table.getValueAt(row, 3) + "";
if ("男".equals(sex)) {
boy.setSelected(true);
} else if ("女".equals(sex)) {
girl.setSelected(true);
}
}
});

  

5、提交并处理修改过的内容

			btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//获取学号
String sno = textField_1.getText().trim();
//获取姓名
String name = textField_2.getText().trim();
//获取性别
String sex = "";
if (boy.isSelected()) {
sex = "男";
} else if (girl.isSelected()) {
sex = "女";
}
//获取班级
String className = comboBox.getSelectedItem().toString();
//说明id已经在前面保存了;
//构建窗体
Student student = new Student(id, sno, name, sex, className);
try {
if (service.editStudent(student)) {
JOptionPane.showMessageDialog(null, "修改成功");
} else {
JOptionPane.showMessageDialog(null, "修改失败");
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
});

6、截图

7、完整代码

package com.student.view;

import java.awt.EventQueue;
import java.sql.SQLException;
import java.util.List; import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel; import com.student.model.Student;
import com.student.service.StudentService; import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton; import java.awt.event.ActionListener;
import java.awt.event.ActionEvent; import javax.swing.JRadioButton;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; /*
* 项目名称:
*
* 文件名称为:ShowStudent.java
* 文件创建人:daxiang
*
* @author daxiang
* @version
* @time 2018年6月22日 上午8:03:24
* @copyright daxiang
*/
public class ShowStudent extends JFrame { private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JTable table;
private JTextField textField;
private JLabel lblNewLabel;
private JLabel lblNewLabel_1;
private JLabel lblNewLabel_2;
private JLabel lblNewLabel_3;
private JTextField textField_1;
private JTextField textField_2;
private JRadioButton boy;
private JRadioButton girl;
private int id;// 保存修改时的ID /**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ShowTable frame = new ShowTable();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
} /**
* Create the frame.
*/
public ShowStudent() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 860, 618);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
// 设置无布局
contentPane.setLayout(null);
// 创建滚动面板
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(37, 89, 739, 263);
contentPane.add(scrollPane);
// 创建表格
table = new JTable();
table.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
int row = table.getSelectedRow();
id = (int) table.getValueAt(row, 0);
textField_1.setText(table.getValueAt(row, 1) + "");
textField_2.setText(table.getValueAt(row, 2) + "");
String sex = table.getValueAt(row, 3) + "";
if ("男".equals(sex)) {
boy.setSelected(true);
} else if ("女".equals(sex)) {
girl.setSelected(true);
}
}
}); // 将表格加载到滚动面板
scrollPane.setViewportView(table);
try {
// 创建服务
StudentService service = new StudentService();
// 查询出所有学生
List<Student> list = service.getStudent();
// 装载数据
fillTable(list); JLabel label = new JLabel("请输入学生姓名:");
label.setBounds(93, 43, 123, 18);
contentPane.add(label); textField = new JTextField();
textField.setBounds(242, 40, 169, 24);
contentPane.add(textField);
textField.setColumns(10); JButton button = new JButton("查 找");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
// 获取查询数据
// textField.getText().trim()获取文本框数据并且去掉空格
List<Student> list1 = service.getStudent(textField
.getText().trim());
// 装载到表格
fillTable(list1);
} catch (SQLException e1) {
e1.printStackTrace();
}
}
});
button.setBounds(477, 39, 113, 27);
contentPane.add(button); lblNewLabel = new JLabel("学 号");
lblNewLabel.setBounds(86, 383, 52, 18);
contentPane.add(lblNewLabel); lblNewLabel_1 = new JLabel("姓名");
lblNewLabel_1.setBounds(306, 383, 43, 18);
contentPane.add(lblNewLabel_1); lblNewLabel_2 = new JLabel("班 级");
lblNewLabel_2.setBounds(86, 438, 52, 18);
contentPane.add(lblNewLabel_2); lblNewLabel_3 = new JLabel("性别");
lblNewLabel_3.setBounds(516, 383, 43, 18);
contentPane.add(lblNewLabel_3); textField_1 = new JTextField();
textField_1.setBounds(152, 380, 140, 24);
contentPane.add(textField_1);
textField_1.setColumns(10); textField_2 = new JTextField();
textField_2.setBounds(363, 380, 123, 24);
contentPane.add(textField_2);
textField_2.setColumns(10); ButtonGroup buttonGroup = new ButtonGroup(); boy = new JRadioButton("男");
boy.setBounds(571, 379, 52, 27);
contentPane.add(boy); girl = new JRadioButton("女");
girl.setBounds(639, 379, 52, 27);
contentPane.add(girl); buttonGroup.add(girl);
buttonGroup.add(boy); JComboBox<String> comboBox = new JComboBox<String>();
comboBox.setModel(new DefaultComboBoxModel<String>(new String[] {
"计科1班", "计科2班", "计科3班", "计科4班" }));
comboBox.setBounds(152, 435, 140, 24);
contentPane.add(comboBox); JButton btnNewButton = new JButton("修 改");
// 处理修改
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取学号
String sno = textField_1.getText().trim();
// 获取姓名
String name = textField_2.getText().trim();
// 获取性别
String sex = "";
if (boy.isSelected()) {
sex = "男";
} else if (girl.isSelected()) {
sex = "女";
}
// 获取班级
String className = comboBox.getSelectedItem().toString();
// 说明id已经在前面保存了;
// 构建窗体
Student student = new Student(id, sno, name, sex, className);
try {
if (service.editStudent(student)) {
JOptionPane.showMessageDialog(null, "修改成功");
} else {
JOptionPane.showMessageDialog(null, "修改失败");
}
} catch (SQLException e1) {
e1.printStackTrace();
}
}
});
btnNewButton.setBounds(346, 434, 113, 27);
contentPane.add(btnNewButton); JButton btnNewButton_1 = new JButton("删除");
btnNewButton_1.setBounds(516, 434, 113, 27);
contentPane.add(btnNewButton_1);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
          setVisible(true);
} /**
* 表格装载数据
*
* @param list
*/
public void fillTable(List<Student> list) {
// 将默认的加载数据去掉,重新定义个表头
String[] head = new String[] { "序号", "学号", "姓名", "性别", "班级" };
// 创建一个二维数组,5表示列数
Object[][] data = new Object[list.size()][5];
// 遍历
for (int i = 0; i < list.size(); i++) {
data[i][0] = list.get(i).getId();
data[i][1] = list.get(i).getSno();
data[i][2] = list.get(i).getName();
data[i][3] = list.get(i).getSex();
data[i][4] = list.get(i).getClassName();
}
// 将数据和表头封装
DefaultTableModel datamoModel = new DefaultTableModel(data, head);
// 将封装好的数据加载
table.setModel(datamoModel);
}
}

  

Java课程设计---修改学生基本信息的更多相关文章

  1. Java课程设计---删除学生

    1.界面已经在上次修改操作的过程添加完成 2.在StudentDao中添加删除方法 public boolean delete(int id) throws SQLException { DbUtil ...

  2. Java课程设计---浏览学生(实现根据姓名查询)

    1.修改窗口 2.在StudentDao中增加根据姓名查找的方法 public List<Student> getStudent(String name)throws SQLExcepti ...

  3. Java课程设计报告——学生成绩管理系统

    一.需求分析 1.数据存储在数据库和文件中 2.分为"教师"模块和"学生"模块. 3.学生模块提供登陆功能,登陆成功后可查询数学.Java.体育成绩 (学生学号 ...

  4. Java课程设计---添加学生

    1.创建添加窗体 package com.student.view; import java.awt.EventQueue; import javax.swing.ButtonGroup; impor ...

  5. Java课程设计---浏览学生(表格的使用)

    1.创建显示表格的窗体 package com.student.view; import java.awt.EventQueue; import javax.swing.JFrame; import ...

  6. Java课程设计---索引

    一.基础配置 ============================================================== 1.Java课程设计---Eclipse基本环境配置 2.J ...

  7. Java课程设计—学生成绩管理系统(201521123004-林艺如)

    1.团队课程设计博客 团队课程设计博客链接 2.个人负责模块或任务说明 ①.Menu Menu.jsp 在页面中给出提示,用HTML的 MenuTeacher.jsp 利用Menu.jsp进行具体化完 ...

  8. Java课程设计——学生成绩管理系统(201521123003 董美凤)

    Java课程设计--学生成绩管理系统(201521123003 董美凤) 1.团队课程设计博客链接 学生成绩管理系统博客链接 2.个人负责模块或任务说明 信息修改 密码修改 部分界面设计 3.自己的代 ...

  9. Java课程设计——博客作业教学数据分析系统(201521123084 林正晟)

    #课程设计--博客作业教学数据分析系统(201521123084 林正晟) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 学生登陆界面的前端实现和与数据库的连接 学生 ...

随机推荐

  1. windows下使用LTP分词,安装pyltp

    1.LTP介绍 ltp是哈工大出品的自然语言处理工具箱, 提供包括中文分词.词性标注.命名实体识别.依存句法分析.语义角色标注等丰富. 高效.精准的自然语言处理技术.pyltp是python下对ltp ...

  2. python02day

    回顾 1.编译型和解释型 编译型:一次性编译成二进制,再执行 执行效率高,但不能跨平台,开发效率低 代表语言:C 解释型:逐行解释成二进制,再执行 可以跨平台,开发效率高,但执行效率低 代表语言:py ...

  3. 学习Java第11天

    今天所做的工作: 敲代码,按照教材进度,我已经"学完了",用引号引起来. 明天工作安排: 敲代码 所遇到的困难及解决方法: 虽然是"学完了",但真正写起来还是有 ...

  4. EKS助力小白实践云原生——通过k8s部署wordpress应用

    目前云原生在大厂已经有了充分的实践,也逐渐向小厂以及非互联网公司推广.适逢12月20日,腾讯云原生[燎原社]精心打造了云原生在线技术工坊,让零基础的同学也能快速入门和实践 Docker 和 Kuber ...

  5. Redis的最常被问到知识点总结 (转)

    1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.Reids的特点 Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库 ...

  6. 无意进去UIView随笔闹腾着玩 -by 胡 xu

    1 @interface UIView : UIResponder<NSCoding, UIAppearance, UIAppearanceContainer, UIDynamicItem> ...

  7. python进阶(24)Python字典的底层原理以及字典效率

    前言 问题1:python中的字典到底是有序还是无序 问题2:python中字典的效率如何 python字典底层原理   在Python 3.5以前,字典是不能保证顺序的,键值对A先插入字典,键值对B ...

  8. C#后台去除HTML标签

    public string NoHTML(string Htmlstring) { //删除脚本 Htmlstring = Regex.Replace(Htmlstring, @"<s ...

  9. [USACO4.2]工序安排Job Processing

    两种想法: (样例是真的良心,卡掉了两种错误做法)洗完一件马上塞一件到最快的空闲烘干机去?X,因为最后一件洗完的衣服决定了第二问的答案,但它并不一定得到最优待遇--最快的烘干机.   给最后一件洗完的 ...

  10. JDK线程池

    简介 多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力,但频繁的创建线程的开销是很大的,那么如何来减少这部分的开销了,那么就要考虑使用线程 ...