今天给大家带来一个初学者的连接数据库的学生管理系统
首先写一个数据库帮助类(DBHepler)
package com.zking.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DBHepler {
//静态代码
private static String cname = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private static String uname = "数据库用户名";
private static String upwd = "数据库密码";
private static String url = "jdbc:sqlserver://localhost:1433;DatabaseName=表名";
/**
* 静态驱动
*/
static {
try {
//创建驱动
Class.forName(cname);
} catch (Exception e) {
//处理异常
e.printStackTrace();
}
}
/**
* 静态连接
* @return 连接
*/
public static Connection getcon() {
//定义连接
Connection con = null;
try {
//连接驱动
con = DriverManager.getConnection(url, uname, upwd);
} catch (Exception e) {
//处理异常
e.printStackTrace();
}
//返回连接
return con;
}
/**
* 关闭连接
* @param con 连接
* @param ps 执行对象
* @param rs 结果集
*/
public static void getclose(Connection con,PreparedStatement ps,ResultSet rs) {
try {
if(con!=null) {//关闭连接
con.close();
}
if(ps!=null) {//关闭执行对象
ps.close();
}
if(rs!=null) {//关闭结果集
rs.close();
}
} catch (Exception e) {
//处理异常
e.printStackTrace();
}
}
}
我们在来一个实体类(Student)
package com.zking.entity;
public class Student {
//私有化属性
private int sid;//学号
private String sname;//姓名
private String ssex;//性别
private String slike;//爱好
private String saddress;//地址
private String sinfo;//简介
//公开属性
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSsex() {
return ssex;
}
public void setSsex(String ssex) {
this.ssex = ssex;
}
public String getSlike() {
return slike;
}
public void setSlike(String slike) {
this.slike = slike;
}
public String getSaddress() {
return saddress;
}
public void setSaddress(String saddress) {
this.saddress = saddress;
}
public String getSinfo() {
return sinfo;
}
public void setSinfo(String sinfo) {
this.sinfo = sinfo;
}
//构造函数
public Student() {
super();
}
public Student(int sid, String sname, String ssex, String slike, String saddress, String sinfo) {
super();
this.sid = sid;
this.sname = sname;
this.ssex = ssex;
this.slike = slike;
this.saddress = saddress;
this.sinfo = sinfo;
}
public Student(String sname, String ssex, String slike, String saddress, String sinfo) {
super();
this.sname = sname;
this.ssex = ssex;
this.slike = slike;
this.saddress = saddress;
this.sinfo = sinfo;
}
}
接着是方法类(Student_Dao)
里面有添加方法和删除方法,修改方法,模糊查询,单个查询
package com.zking.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import com.zking.entity.Student;
import com.zking.util.DBHepler;
public class Student_dao {
/**
* 添加方法
* @param t 要添加学生信息
* @return 成功放回1,失败放回0
*/
public int add(Student t) {
//定义影响行数
int i = 0;
//定义连接为null
Connection con = null;
//定义执行对象为null
PreparedStatement ps = null;
try {
//执行连接
con = DBHepler.getcon();
//执行sql语句
ps = con.prepareStatement("insert into student values (?,?,?,?,?)");
//给占位符赋值
ps.setString(1, t.getSname());
ps.setString(2, t.getSsex());
ps.setString(3, t.getSlike());
ps.setString(4, t.getSaddress());
ps.setString(5, t.getSinfo());
//计算影响行数
i = ps.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
//处理异常
e.printStackTrace();
}finally {
//关闭资源
DBHepler.getclose(con, ps, null);
}
//返回影响行数
return i;
}
/**
* 修改方法
* @param sid 修改前学生
* @param s 修改后学生信息
* @return 成功放回1,失败放回0
*/
public int update(int sid,Student t) {
//定义影响行数
int i = 0;
//定义连接为null
Connection con = null;
//定义执行对象为null
PreparedStatement ps = null;
try {
//执行连接
con = DBHepler.getcon();
//执行sql语句
ps = con.prepareStatement("update student set sname=?,ssex=?,slike=?,saddress=?,sinfo=? where sid="+sid);
//给占位符赋值
ps.setString(1, t.getSname());
ps.setString(2, t.getSsex());
ps.setString(3, t.getSlike());
ps.setString(4, t.getSaddress());
ps.setString(5, t.getSinfo());
//计算影响行数
i = ps.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
//处理异常
e.printStackTrace();
}finally {
//关闭资源
DBHepler.getclose(con, ps, null);
}
//返回影响行数
return i;
}
/**
* 删除方法
* @param sid 要删除学生信息
* @return 成功放回1,失败放回0
*/
public int delete(int sid) {
//定义影响行数
int i = 0;
//定义连接为null
Connection con = null;
//定义执行对象为null
PreparedStatement ps = null;
try {
//执行连接
con = DBHepler.getcon();
//执行sql语句
ps = con.prepareStatement("delete from student where sid="+sid);
//计算影响行数
i = ps.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
//处理异常
e.printStackTrace();
}finally {
//关闭资源
DBHepler.getclose(con, ps, null);
}
//返回影响行数
return i;
}
/**
* 模糊查询
* @param col 字段名
* @param str 关键字
* @return 集合信息
*/
public ArrayList like(String col,String str) {
//定义一个实体类集合
ArrayList list = new ArrayList<>();
//定义连接为null
Connection con = null;
//定义执行对象为null
PreparedStatement ps = null;
//定义结果集为null
ResultSet rs = null;
try {
//执行连接
con = DBHepler.getcon();
//执行sql语句
ps = con.prepareStatement("select * from student where "+col+" like '%"+str+"%'");
//执行结果集
rs = ps.executeQuery();
//遍历
while(rs.next()) {
//赋值
int sid = rs.getInt(1);
String sname = rs.getString(2);
String ssex = rs.getString(3);
String slike = rs.getString(4);
String saddress = rs.getString(5);
String sinfo = rs.getString(6);
//实例化对象赋值
Student stu = new Student(sid,sname, ssex, slike, saddress, sinfo);
//添加
list.add(stu);
}
} catch (Exception e) {
// TODO: handle exception
//处理异常
e.printStackTrace();
}finally {
//关闭资源
DBHepler.getclose(con, ps, rs);
}
//返回集合信息
return list;
}
/**
* 查询单个
* @param sid 要查询的学生id
* @return 实体类信息
*/
public Student chaxun(int sid) {
//定义一个实体类为null
Student stu = null;
//定义连接为null
Connection con = null;
//定义执行对象为null
PreparedStatement ps = null;
//定义结果集为null
ResultSet rs = null;
try {
//执行连接
con = DBHepler.getcon();
//执行sql语句
ps = con.prepareStatement("select * from student where sid="+sid);
//执行结果集
rs = ps.executeQuery();
//遍历
while(rs.next()) {
//赋值
String sname = rs.getString(2);
String ssex = rs.getString(3);
String slike = rs.getString(4);
String saddress = rs.getString(5);
String sinfo = rs.getString(6);
//实例化对象赋值
stu = new Student(sid,sname, ssex, slike, saddress, sinfo);
}
} catch (Exception e) {
// TODO: handle exception
//处理异常
e.printStackTrace();
}finally {
//关闭资源
DBHepler.getclose(con, ps, rs);
}
//返回实体类信息
return stu;
}
}
接着就是我们需要的窗体了
首先是主窗体
大致是这样的,上面,和下面是画布,中间是表格
package com.zking.ui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import com.zking.dao.Student_dao;
import com.zking.entity.Student;
@SuppressWarnings("serial")
public class Index_Ui extends JFrame {
// 创建上面的画布
JPanel jp1 = new JPanel();
// 创建表格
JTable jta = new JTable();
// 创建表模式
DefaultTableModel def = new DefaultTableModel();
// 创建滚动面板
JScrollPane jsc = new JScrollPane(jta);
// 创建下面的画布
JPanel jp2 = new JPanel();
public Index_Ui() {
// 创建窗体-标题
this.setTitle("主窗体");
// 创建窗体-大小
this.setSize(500, 500);
// 创建窗体-居中
this.setLocationRelativeTo(null);
// 创建窗体-关闭
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建下拉框
JComboBox jco = new JComboBox();
// 添加元素
jco.addItem("名称");
jco.addItem("性别");
jco.addItem("地址");
// 创建文本框
JTextField jtf = new JTextField(10);
// 创建按钮-查询
JButton jb1 = new JButton("查询");
// 添加的上面的画布
jp1.add(jco);
jp1.add(jtf);
jp1.add(jb1);
// 设置表模式
jta.setModel(def);
// 给表模式添加元素
def.addColumn("学号");
def.addColumn("姓名");
def.addColumn("性别");
def.addColumn("爱好");
def.addColumn("地址");
// 调用刷新方法
showinfo("sname", "");
// 创建按钮-添加,删除,修改,详情
JButton jb2 = new JButton("添加");
JButton jb3 = new JButton("删除");
JButton jb4 = new JButton("修改");
JButton jb5 = new JButton("详情");
// 添加到下面的画布
jp2.add(jb2);
jp2.add(jb3);
jp2.add(jb4);
jp2.add(jb5);
// 给查询按钮内部匿名事件
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 获取下拉框的值
String col = jco.getSelectedItem() + "";
if (col.equals("名称")) {
col = "sname";
}
if (col.equals("性别")) {
col = "ssex";
}
if (col.equals("爱好")) {
col = "slike";
}
// 获取文本框的值
String str = jtf.getText();
// 调用刷新方法
showinfo(col, str);
}
});
// 给添加按钮内部匿名事件
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//打开添加窗体
new Add_Ui(Index_Ui.this);
}
});
// 给删除按钮内部匿名事件
jb3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 获取所选择行数
int row = jta.getSelectedRow();
// 判断
if (row >= 0) {
// 获取选择行数的第一个字段值
String id = def.getValueAt(row, 0) + "";
// 强转
int sid = Integer.valueOf(id);
if (JOptionPane.showConfirmDialog(null, "是否删除?") == 0) {
// 实例化dao类
Student_dao sdao = new Student_dao();
// 调用dao类删除单个方法,获取影响行数
int i = sdao.delete(sid);
// 判断
if (i == 1) {
JOptionPane.showMessageDialog(null, "删除成功");
// 调用showinfo的方法
showinfo("sname", "");
} else {
JOptionPane.showMessageDialog(null, "删除失败");
}
} else {
JOptionPane.showMessageDialog(null, "取消删除");
}
} else {
JOptionPane.showMessageDialog(null, "请选择要删除的学生");
}
}
});
// 给修改按钮内部匿名事件
jb4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int row = jta.getSelectedRow();
// 判断
if (row >= 0) {
// 获取选择行数的第一个字段值
String id = def.getValueAt(row, 0) + "";
// 强转
int sid = Integer.valueOf(id);
// 实例化dao类
Student_dao sdao = new Student_dao();
// 调用dao类查询单个方法
Student stu = sdao.chaxun(sid);
// 打开修改窗体
new Upd_Ui(Index_Ui.this, stu);
} else {
JOptionPane.showMessageDialog(null, "请选择要修改的学生");
}
}
});
// 给详情按钮内部匿名事件
jb5.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int row = jta.getSelectedRow();
// 判断
if (row >= 0) {
// 获取选择行数的第一个字段值
String id = def.getValueAt(row, 0) + "";
// 强转
int sid = Integer.valueOf(id);
// 实例化dao类
Student_dao sdao = new Student_dao();
// 调用dao类查询单个方法
Student stu = sdao.chaxun(sid);
// 打开修改窗体
new Xq_Ui(stu);
} else {
JOptionPane.showMessageDialog(null, "请选择要查看的学生");
}
}
});
// 显示
this.getContentPane().add("North", jp1);
this.getContentPane().add("Center", jsc);
this.getContentPane().add("South", jp2);
this.setVisible(true);
}
/**
* 刷新方法,绑定数据
*
* @param col 字段名
* @param str 关键字
*/
public void showinfo(String col, String str) {
// 获取所有行
int count = jta.getRowCount();
// 遍历
for (int i = 0; i < count; i++) {
// 删除所有行
def.removeRow(0);
}
// 实例化dao
Student_dao sdao = new Student_dao();
// 调拥dao类查询赋值给集合
ArrayList list = sdao.like(col, str);
// 遍历
for (Student s : list) {
// 实例化vc
Vector
接着是添加窗体
我用到的是网袋布局
package com.zking.ui;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import com.zking.dao.Student_dao;
import com.zking.entity.Student;
@SuppressWarnings("serial")
public class Add_Ui extends JFrame{
public Add_Ui(Index_Ui i) {
// 创建窗体-标题
this.setTitle("添加窗体");
// 创建窗体-大小
this.setSize(500, 500);
// 创建窗体-居中
this.setLocationRelativeTo(null);
// 创建窗体-关闭
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//创建画布
JPanel jp = new JPanel();
//网袋布局
GridBagLayout gbl = new GridBagLayout();
//约束对象
GridBagConstraints gbc = new GridBagConstraints();
//设置网袋约束
jp.setLayout(gbl);
//创建文本标签-姓名
JLabel jl1 = new JLabel("姓名:");
//添加到画布
jp.add(jl1);
//约束
gbc.gridx = 0;
gbc.gridy = 0;
gbl.setConstraints(jl1, gbc);
//创建文本框
JTextField jtf = new JTextField(10);
//添加到画布
jp.add(jtf);
//约束
gbc.gridx = 1;
gbc.gridy = 0;
gbl.setConstraints(jtf, gbc);
//创建文本标签-性别
JLabel jl2 = new JLabel("性别:");
//添加到画布
jp.add(jl2);
//约束
gbc.gridx = 0;
gbc.gridy = 1;
gbl.setConstraints(jl2, gbc);
//单选按钮-男
JRadioButton jr1 = new JRadioButton("男");
//添加到画布
jp.add(jr1);
//约束
gbc.gridx = 1;
gbc.gridy = 1;
gbl.setConstraints(jr1, gbc);
//单选按钮-女
JRadioButton jr2 = new JRadioButton("女");
//添加到画布
jp.add(jr2);
//约束
gbc.gridx = 2;
gbc.gridy = 1;
gbl.setConstraints(jr2, gbc);
//单选键设唯一
ButtonGroup but = new ButtonGroup();
but.add(jr2);
but.add(jr1);
//创建文本标签-爱好
JLabel jl3 = new JLabel("爱好:");
//添加到画布
jp.add(jl3);
//约束
gbc.gridx = 0;
gbc.gridy = 2;
gbl.setConstraints(jl3, gbc);
//创建多选键-画画
JCheckBox jc1 = new JCheckBox("画画");
//添加到画布
jp.add(jc1);
//约束
gbc.gridx = 1;
gbc.gridy = 2;
gbl.setConstraints(jc1, gbc);
//创建多选键-听歌
JCheckBox jc2 = new JCheckBox("听歌");
//添加到画布
jp.add(jc2);
//约束
gbc.gridx = 2;
gbc.gridy = 2;
gbl.setConstraints(jc2, gbc);
//创建文本标签-地址
JLabel jl4 = new JLabel("地址:");
//添加到画布
jp.add(jl4);
//约束
gbc.gridx = 0;
gbc.gridy = 3;
gbl.setConstraints(jl4, gbc);
//创建下拉框
JComboBox jco = new JComboBox<>();
//添加到画布
jp.add(jco);
//添加元素
jco.addItem("湖南");
jco.addItem("深圳");
jco.addItem("上海");
jco.addItem("杭州");
//约束
gbc.gridx = 1;
gbc.gridy = 3;
gbl.setConstraints(jco, gbc);
//创建文本标签-简介
JLabel jl5 = new JLabel("简介:");
//添加到画布
jp.add(jl5);
//约束
gbc.gridx = 0;
gbc.gridy = 4;
gbl.setConstraints(jl5, gbc);
//创建文本域
JTextArea jta = new JTextArea(10,10);
//创建滚动面板
JScrollPane jsc = new JScrollPane(jta);
//添加到画布
jp.add(jsc);
//约束
gbc.gridx = 1;
gbc.gridy = 4;
gbl.setConstraints(jsc, gbc);
//创建按钮-确认
JButton jb1 = new JButton("确认");
//添加到画布
jp.add(jb1);
//约束
gbc.gridx = 0;
gbc.gridy = 5;
gbl.setConstraints(jb1,gbc);
//创建按钮-取消
JButton jb2 = new JButton("取消");
//添加到画布
jp.add(jb2);
//约束
gbc.gridx = 2;
gbc.gridy = 5;
gbl.setConstraints(jb2,gbc);
//给确认按钮内部匿名事件
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//获取文本框的值
String sname = jtf.getText();
//获取单选键的值
String ssex = "";
if(jr1.isSelected()) {
ssex = "男";
}
if(jr2.isSelected()) {
ssex = "女";
}
//获取多选框的值
String slike = "";
if(jc1.isSelected()) {
slike = "画画";
}
if(jc2.isSelected()) {
slike = "听歌";
}
//获取下拉框的值
String saddress = jco.getSelectedItem()+"";
//获取文本域的值
String sinfo = jta.getText();
//实例化对象赋值
Student stu = new Student(sname, ssex, slike, saddress, sinfo);
//实例化dao类,获取影响行数
int i1 = new Student_dao().add(stu);
//判断影响行数
if(i1 == 1) {
JOptionPane.showMessageDialog(null, "添加成功");
//调用showinfo方法
i.showinfo("sname", "");
//关闭本窗体
Add_Ui.this.dispose();
}else {
JOptionPane.showMessageDialog(null, "添加失败");
}
}
});
//给取消按钮内部匿名事件
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "退出添加");
//关闭本窗体
Add_Ui.this.dispose();
}
});
//显示
this.setVisible(true);
this.getContentPane().add(jp);
}
}
其次是修改窗体
package com.zking.ui;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import com.zking.dao.Student_dao;
import com.zking.entity.Student;
@SuppressWarnings("serial")
public class Upd_Ui extends JFrame {
public Upd_Ui(Index_Ui i, Student s) {
// 创建窗体-标题
this.setTitle("修改窗体");
// 创建窗体-大小
this.setSize(500, 500);
// 创建窗体-居中
this.setLocationRelativeTo(null);
// 创建窗体-关闭
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建画布
JPanel jp = new JPanel();
// 网袋布局
GridBagLayout gbl = new GridBagLayout();
// 约束对象
GridBagConstraints gbc = new GridBagConstraints();
// 设置网袋约束
jp.setLayout(gbl);
// 创建文本标签-姓名
JLabel jl1 = new JLabel("姓名:");
// 添加到画布
jp.add(jl1);
// 约束
gbc.gridx = 0;
gbc.gridy = 0;
gbl.setConstraints(jl1, gbc);
// 创建文本框
JTextField jtf = new JTextField(10);
// 添加到画布
jp.add(jtf);
// 约束
gbc.gridx = 1;
gbc.gridy = 0;
gbl.setConstraints(jtf, gbc);
// 创建文本标签-性别
JLabel jl2 = new JLabel("性别:");
// 添加到画布
jp.add(jl2);
// 约束
gbc.gridx = 0;
gbc.gridy = 1;
gbl.setConstraints(jl2, gbc);
// 单选按钮-男
JRadioButton jr1 = new JRadioButton("男");
// 添加到画布
jp.add(jr1);
// 约束
gbc.gridx = 1;
gbc.gridy = 1;
gbl.setConstraints(jr1, gbc);
// 单选按钮-女
JRadioButton jr2 = new JRadioButton("女");
// 添加到画布
jp.add(jr2);
// 约束
gbc.gridx = 2;
gbc.gridy = 1;
gbl.setConstraints(jr2, gbc);
// 单选键设唯一
ButtonGroup but = new ButtonGroup();
but.add(jr2);
but.add(jr1);
// 创建文本标签-爱好
JLabel jl3 = new JLabel("爱好:");
// 添加到画布
jp.add(jl3);
// 约束
gbc.gridx = 0;
gbc.gridy = 2;
gbl.setConstraints(jl3, gbc);
// 创建多选键-画画
JCheckBox jc1 = new JCheckBox("画画");
// 添加到画布
jp.add(jc1);
// 约束
gbc.gridx = 1;
gbc.gridy = 2;
gbl.setConstraints(jc1, gbc);
// 创建多选键-听歌
JCheckBox jc2 = new JCheckBox("听歌");
// 添加到画布
jp.add(jc2);
// 约束
gbc.gridx = 2;
gbc.gridy = 2;
gbl.setConstraints(jc2, gbc);
// 创建文本标签-地址
JLabel jl4 = new JLabel("地址:");
// 添加到画布
jp.add(jl4);
// 约束
gbc.gridx = 0;
gbc.gridy = 3;
gbl.setConstraints(jl4, gbc);
// 创建下拉框
JComboBox jco = new JComboBox<>();
// 添加到画布
jp.add(jco);
// 添加元素
jco.addItem("湖南");
jco.addItem("深圳");
jco.addItem("上海");
jco.addItem("杭州");
// 约束
gbc.gridx = 1;
gbc.gridy = 3;
gbl.setConstraints(jco, gbc);
// 创建文本标签-简介
JLabel jl5 = new JLabel("简介:");
// 添加到画布
jp.add(jl5);
// 约束
gbc.gridx = 0;
gbc.gridy = 4;
gbl.setConstraints(jl5, gbc);
// 创建文本域
JTextArea jta = new JTextArea(10, 10);
// 创建滚动面板
JScrollPane jsc = new JScrollPane(jta);
// 添加到画布
jp.add(jsc);
// 约束
gbc.gridx = 1;
gbc.gridy = 4;
gbl.setConstraints(jsc, gbc);
// 创建按钮-确认
JButton jb1 = new JButton("确认");
// 添加到画布
jp.add(jb1);
// 约束
gbc.gridx = 0;
gbc.gridy = 5;
gbl.setConstraints(jb1, gbc);
// 创建按钮-取消
JButton jb2 = new JButton("取消");
// 添加到画布
jp.add(jb2);
// 约束
gbc.gridx = 2;
gbc.gridy = 5;
gbl.setConstraints(jb2, gbc);
//给文本框赋值
jtf.setText(s.getSname());
//给单选键赋值
if(s.getSsex().equals("男")) {
jr1.setSelected(true);
}
if(s.getSsex().equals("女")) {
jr2.setSelected(true);
}
//给多选键赋值
if(s.getSlike().equals("画画")) {
jc2.setSelected(true);
}
if(s.getSlike().equals("听歌")) {
jc1.setSelected(true);
}
//给下拉框赋值
jco.setSelectedItem(s.getSaddress());
//给文本域赋值
jta.setText(s.getSinfo());
// 给确认按钮内部匿名事件
jb1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
// 获取文本框的值
String sname = jtf.getText();
// 获取单选键的值
String ssex = "";
if (jr1.isSelected()) {
ssex = "男";
}
if (jr2.isSelected()) {
ssex = "女";
}
// 获取多选框的值
String slike = "";
if (jc1.isSelected()) {
slike = "画画";
}
if (jc2.isSelected()) {
slike = "听歌";
}
// 获取下拉框的值
String saddress = jco.getSelectedItem() + "";
// 获取文本域的值
String sinfo = jta.getText();
// 实例化对象赋值
Student stu = new Student(sname, ssex, slike, saddress, sinfo);
// 实例化dao类,获取影响行数
int i1 = new Student_dao().update(s.getSid(), stu);
// 判断影响行数
if (i1 == 1) {
JOptionPane.showMessageDialog(null, "修改成功");
// 调用showinfo方法
i.showinfo("sname", "");
// 关闭本窗体
Upd_Ui.this.dispose();
} else {
JOptionPane.showMessageDialog(null, "修改失败");
}
}
});
// 给取消按钮内部匿名事件
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "退出修改");
// 关闭本窗体
Upd_Ui.this.dispose();
}
});
// 显示
this.setVisible(true);
this.getContentPane().add(jp);
}
}
删除是没有窗体的,删除是获取到表格的值,点击删除按钮直接删除所有接下来是详情窗体
当我没有点击一个学生删除时是要弹窗的
当我选择了要删除的学生时也是要提示的
详情窗体设置了不可对内容进行编辑
package com.zking.ui;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import com.zking.entity.Student;
@SuppressWarnings("serial")
public class Xq_Ui extends JFrame {
public Xq_Ui(Student s) {
// 创建窗体-标题
this.setTitle("修改窗体");
// 创建窗体-大小
this.setSize(500, 500);
// 创建窗体-居中
this.setLocationRelativeTo(null);
// 创建窗体-关闭
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建画布
JPanel jp = new JPanel();
// 网袋布局
GridBagLayout gbl = new GridBagLayout();
// 约束对象
GridBagConstraints gbc = new GridBagConstraints();
// 设置网袋约束
jp.setLayout(gbl);
// 创建文本标签-姓名
JLabel jl1 = new JLabel("姓名:");
// 添加到画布
jp.add(jl1);
// 约束
gbc.gridx = 0;
gbc.gridy = 0;
gbl.setConstraints(jl1, gbc);
// 创建文本框
JTextField jtf = new JTextField(10);
// 添加到画布
jp.add(jtf);
// 约束
gbc.gridx = 1;
gbc.gridy = 0;
gbl.setConstraints(jtf, gbc);
//文本框禁止编辑
jtf.setEditable(false);
// 创建文本标签-性别
JLabel jl2 = new JLabel("性别:");
// 添加到画布
jp.add(jl2);
// 约束
gbc.gridx = 0;
gbc.gridy = 1;
gbl.setConstraints(jl2, gbc);
// 单选按钮-男
JRadioButton jr1 = new JRadioButton("男");
// 添加到画布
jp.add(jr1);
// 约束
gbc.gridx = 1;
gbc.gridy = 1;
gbl.setConstraints(jr1, gbc);
// 单选按钮-女
JRadioButton jr2 = new JRadioButton("女");
// 添加到画布
jp.add(jr2);
// 约束
gbc.gridx = 2;
gbc.gridy = 1;
gbl.setConstraints(jr2, gbc);
//给多选键禁止编辑
jr1.setEnabled(false);
jr2.setEnabled(false);
// 单选键设唯一
ButtonGroup but = new ButtonGroup();
but.add(jr2);
but.add(jr1);
// 创建文本标签-爱好
JLabel jl3 = new JLabel("爱好:");
// 添加到画布
jp.add(jl3);
// 约束
gbc.gridx = 0;
gbc.gridy = 2;
gbl.setConstraints(jl3, gbc);
// 创建多选键-画画
JCheckBox jc1 = new JCheckBox("画画");
// 添加到画布
jp.add(jc1);
// 约束
gbc.gridx = 1;
gbc.gridy = 2;
gbl.setConstraints(jc1, gbc);
// 创建多选键-听歌
JCheckBox jc2 = new JCheckBox("听歌");
// 添加到画布
jp.add(jc2);
// 约束
gbc.gridx = 2;
gbc.gridy = 2;
gbl.setConstraints(jc2, gbc);
//多选键禁止编辑
jc1.setEnabled(false);
jc2.setEnabled(false);
// 创建文本标签-地址
JLabel jl4 = new JLabel("地址:");
// 添加到画布
jp.add(jl4);
// 约束
gbc.gridx = 0;
gbc.gridy = 3;
gbl.setConstraints(jl4, gbc);
// 创建下拉框
JComboBox jco = new JComboBox<>();
// 添加到画布
jp.add(jco);
// 添加元素
jco.addItem("湖南");
jco.addItem("深圳");
jco.addItem("上海");
jco.addItem("杭州");
// 约束
gbc.gridx = 1;
gbc.gridy = 3;
gbl.setConstraints(jco, gbc);
//下拉框禁止编辑
jco.setEnabled(false);
// 创建文本标签-简介
JLabel jl5 = new JLabel("简介:");
// 添加到画布
jp.add(jl5);
// 约束
gbc.gridx = 0;
gbc.gridy = 4;
gbl.setConstraints(jl5, gbc);
// 创建文本域
JTextArea jta = new JTextArea(10, 10);
// 创建滚动面板
JScrollPane jsc = new JScrollPane(jta);
// 添加到画布
jp.add(jsc);
// 约束
gbc.gridx = 1;
gbc.gridy = 4;
gbl.setConstraints(jsc, gbc);
//文本域禁止编辑
jta.setEditable(false);
// 创建按钮-退出
JButton jb2 = new JButton("退出");
// 添加到画布
jp.add(jb2);
// 约束
gbc.gridx = 2;
gbc.gridy = 5;
gbl.setConstraints(jb2, gbc);
// 给文本框赋值
jtf.setText(s.getSname());
// 给单选键赋值
if (s.getSsex().equals("男")) {
jr1.setSelected(true);
}
if (s.getSsex().equals("女")) {
jr2.setSelected(true);
}
// 给多选键赋值
if (s.getSlike().equals("画画")) {
jc2.setSelected(true);
}
if (s.getSlike().equals("听歌")) {
jc1.setSelected(true);
}
// 给下拉框赋值
jco.setSelectedItem(s.getSaddress());
// 给文本域赋值
jta.setText(s.getSinfo());
// 给退出按钮内部匿名事件
jb2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "退出详情");
// 关闭本窗体
Xq_Ui.this.dispose();
}
});
// 显示
this.setVisible(true);
this.getContentPane().add(jp);
}
}
OK,所有的内容展示完了,如果遇到什么问题可以评论区留言或者私信我,我在看到的情况下尽自己最大的知识度去为大家解答疑惑。