javaUI 使用举例

来源:互联网 发布:同花顺云计算 编辑:程序博客网 时间:2024/06/05 03:28
package DO;public class LandingDO {private String sid;private String password;public LandingDO(){}public LandingDO(String sid, String password) {super();this.sid = sid;this.password = password;}public String getSid() {return sid;}public void setSid(String sid) {this.sid = sid;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}package DO;import java.util.Date;public class TeacherDO {private String sno;private String sname;private String gender;private String course;private String classis;private String grande;private String address;private Date intime;public TeacherDO(){}public TeacherDO(String sno, String sname, String gender, String course,String classis, String grande, String address, Date intime) {super();this.sno = sno;this.sname = sname;this.gender = gender;this.course = course;this.classis = classis;this.grande = grande;this.address = address;this.intime = intime;}public String getSno() {return sno;}public void setSno(String sno) {this.sno = sno;}public String getSname() {return sname;}public void setSname(String sname) {this.sname = sname;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getCourse() {return course;}public void setCourse(String course) {this.course = course;}public String getClassis() {return classis;}public void setClassis(String classis) {this.classis = classis;}public String getGrande() {return grande;}public void setGrande(String grande) {this.grande = grande;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public Date getIntime() {return intime;}public void setIntime(Date intime) {this.intime = intime;}}package view;/** * * 此类主要用于显示登陆界面 */import java.awt.BorderLayout;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.Box;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;import DAO.DatabaseLand;import DO.LandingDO;import DO.TeacherDO;public class landingUI extends JFrame{private JLabel sno = new JLabel ("学号");private JLabel password = new JLabel ("密码");public JTextField snol = new JTextField (13);private JPasswordField passwordl = new JPasswordField (13);private JButton landBtn = new JButton("登陆");private JButton cancelBtn = new JButton("取消");private JButton signinBtn = new JButton("重置");private TeacherManageUI TeacherManageui = new TeacherManageUI();//师资管理显示界面//若输入为空则提示输入错误,不能为空private void langjudge() {String account = snol.getText();String passwd = passwordl.getText();if("".equals(account) || "".equals(passwd)) {JOptionPane.showMessageDialog(this, "账号或密码不能为空!", "登录失败", JOptionPane.ERROR_MESSAGE);} }//从提交的页面取出学号和密码,与数据库中的对比public void testland(){String account;String passwd;String sno2;String pass;try {account = snol.getText();passwd = passwordl.getText();DatabaseLand land = new DatabaseLand();LandingDO stu =land. getCourseById(account);sno2 = stu.getSid();pass = stu.getPassword();if((account).equals(sno2) && (passwd).equals(pass)){JOptionPane.showMessageDialog(null, "登录成功");new TeacherManageUI().setVisible(true);setVisible(false);}} catch (Exception e) {// TODO Auto-generated catch blockJOptionPane.showMessageDialog(null, "用户名或密码不正确");}}public void initListener(){landBtn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {//当用户按下添加登陆之后,要显示TeacherManageUI界面 testland();//输入错误时判断 langjudge();//输入为空判断}});cancelBtn.addActionListener(new ActionListener(){ @Overridepublic void actionPerformed(ActionEvent e) {//当用户点击取消时,关闭landing界面setVisible(false);}});signinBtn.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubsnol.setText("");passwordl.setText("");setVisible(true);}});}public landingUI(){initListener();Box box =Box.createVerticalBox();//创建一个垂直箱子LeftFlowLayoutPanel pno = new LeftFlowLayoutPanel();pno.add(sno);pno.add(snol);box.add(Box.createHorizontalStrut(40));LeftFlowLayoutPanel ppasswd = new LeftFlowLayoutPanel();ppasswd.add(password);ppasswd.add(passwordl);box.add(pno);box.add(ppasswd);JPanel south = new JPanel();south.add(landBtn);south.add(cancelBtn);south.add(signinBtn);this.add(south,BorderLayout.SOUTH);this.add(box); //设置JFrame的显示效果this.setLocationRelativeTo(this);this.setSize(300,250); this.setVisible(true); this.setTitle("登陆界面");}//靠左对齐class LeftFlowLayoutPanel extends JPanel{public LeftFlowLayoutPanel(){this.setLayout(new FlowLayout(FlowLayout.CENTER));}}/*public static void main(String[] args) {new landingUI();}*/}package view;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Arrays;import java.util.Vector;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.table.DefaultTableModel;import DAO.TeacherDAO;public class TeacherManageUI extends JFrame{private JTextField name = new JTextField(15);//文本框JTextFieldprivate JLabel lname = new JLabel("名字");//标签JLabel//设置四个按钮JButtonprivate JButton queryBtn = new JButton("查询");private JButton addBtn = new JButton("添加");private JButton updateBtn = new JButton("修改");private JButton deleteBtn = new JButton("删除");//(抽象类)AbstractTableModel implements TableModel//class MyTableModel extends AbstractTableModel//DefaultTableModel(实体类)//使用Vector来存储数据结果集和table的表头String[] t = new String[]{"职工号","姓名","性别","教学课程","班级","年级","地址","入职时间"};private Vector result = new Vector();//结果集private Vector title = new Vector(Arrays.asList(t));//表头private DefaultTableModel datamodel = new DefaultTableModel(result,title);private JTable table = new JTable(datamodel);//JTable 用来显示和编辑常规二维单元表,同时提供了这些功能的默认设置,设置简单表private TeacherUI sui = new TeacherUI(this);public void reflushTable(){TeacherDAO teaDAO = new TeacherDAO();result = teaDAO.getAllTeacher();datamodel.setDataVector(result, title);}public void initListener(){addBtn.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {//当用户按下添加按钮之后,要显示TeacherUI界面sui.setTitle("添加教师信息");sui.setVisible(true);}});queryBtn.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {String query = name.getText();TeacherDAO teaDAO = new TeacherDAO();result = teaDAO.queryTeacherByName(query);datamodel.setDataVector(result, title);}});deleteBtn.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {int row = table.getSelectedRow();//System.out.println("你选中的是: " + row);Vector v = (Vector)datamodel.getDataVector().get(row);String sno = (String)v.get(0);TeacherDAO teaDAO = new TeacherDAO();teaDAO.deleteBySno(sno);result = datamodel.getDataVector();result.remove(row);datamodel.setDataVector(result, title);}});updateBtn.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {// 1、获取用户选中的记录行号int row = table.getSelectedRow();String sno = (String)((Vector)datamodel.getDataVector().get(row)).get(0);System.out.println("你选中的是第" + row+"行");//2、弹出修改教师信息对话框TeacherUIsui.setTitle("修改教师信息");sui.initTeacherUI(sno);sui.setVisible(true);}});}public TeacherManageUI(){this.setTitle("TeacherManageUI");initListener();JPanel north = new JPanel();north.add(lname);north.add(name);north.add(queryBtn);north.add(addBtn);this.add(north,BorderLayout.NORTH);JScrollPane scrollTable = new JScrollPane(table);reflushTable();this.add(scrollTable);JPanel south = new JPanel();south.add(updateBtn);south.add(deleteBtn);this.add(south,BorderLayout.SOUTH);//设置JFrame的显示效果this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLocationRelativeTo(this);this.pack();//this.setVisible(true);}/*public static void main(String[] args) {new TeacherManageUI();s}*/}package view;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import javax.swing.Box;import javax.swing.ButtonGroup;import javax.swing.JButton;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.JTextField;import DAO.TeacherDAO;import DO.TeacherDO;public class TeacherUI extends JFrame{//标签private JLabel lname = new JLabel("姓名");private JLabel lsno = new JLabel("职工号");private JLabel lgender = new JLabel("性别");private JLabel lcourse = new JLabel("教学课程");private JLabel lclassis = new JLabel("教学班级");private JLabel lgrade = new JLabel("教学年级");private JLabel laddress = new JLabel("地址");private JLabel lintime = new JLabel("入职时间");//文本框private JTextField name = new JTextField(15);private JTextField sno = new JTextField(15);//单选按钮private JRadioButton m = new JRadioButton("男");private JRadioButton w = new JRadioButton("女");//下拉列表JComboBox教学课程private String[] profnl = new String[]{"高数","英语","JAVA","C语言"};private JComboBox course = new JComboBox(profnl);// 下拉列表JComboBox教学班级private String[] css = new String[]{"111","112","121","122","131","132","141","142"};private JComboBox classis = new JComboBox(css);// 下拉列表JComboBox教学年级private String[] grd = new String[]{"一年级","二年级","三年级","四年级"};private JComboBox grade = new JComboBox(grd);//文本框private JTextField address = new JTextField(40);private JLabel dateformat = new JLabel("格式:yyyy-MM-dd"); //标签private JTextField intime = new JTextField(15);//yyyy-MM-dd //文本框//按钮,在界面的右下角应该含有两个button一个是完成操作,一个是取消操作private JButton finish = new JButton("完成");private JButton cancel = new JButton("取消");private TeacherManageUI TeacherManageUI ; //Java事件处理机制中所对应的接口分别是 //鼠标进入MouseListener、//按下鼠标MouseListener、//拖拽鼠标MouseMotionListener、//单击按钮ActionListener、//选择复选框ItemListener //单击按钮完成和取消的监听器public void initListener(){cancel.addActionListener(new ActionListener(){//注册事件监听器addActionListener,并实现actionPerformed方法//actionPerformed方法是ActionListener这个接口里面的方法,用于接收操作事件的监听器接口。//对处理操作事件感兴趣的类可以实现此接口,而使用该类创建的对象可使用组件的 addActionListener 方法向该组件注册。//在发生操作事件时,调用该对象的 actionPerformed 方法。public void actionPerformed(ActionEvent e) { //发生操作时调用。setVisible(false);//隐藏当前窗体}});finish.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0) {//1、从界面上将教师的信息读取下来String snoUI = sno.getText();String snameUI = name.getText();String genderUI;if(w.isSelected()){genderUI="女";}else{genderUI="男";}String courseUI = (String)course.getSelectedItem();String classisUI = (String)classis.getSelectedItem();String gradeUI = (String) grade.getSelectedItem();String addressUI = address.getText();String intimeUI = intime.getText();//讲字符串转化成java.util.DateSimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Date time=null;try {time = sdf.parse(intimeUI);} catch (ParseException e) {// TODO 自动生成 catch 块e.printStackTrace();}/*System.out.println(snoUI);System.out.println(snameUI);System.out.println(courseUI);System.out.println(classisUI);System.out.println(gradeUI);System.out.println(addressUI);System.out.println(intimeUI);*/TeacherDO tea = new TeacherDO();tea.setSno(snoUI);tea.setSname(snameUI);tea.setGender(genderUI);tea.setCourse(courseUI);tea.setClassis(classisUI);tea.setGrande(gradeUI);tea.setAddress(addressUI);tea.setIntime(time);//2、连接数据库讲获取下来的信息写入到数据库中TeacherDAO TeacherDAO = new TeacherDAO();if("修改教师信息".equals(getTitle())){TeacherDAO.updateTeacher(tea);JOptionPane.showMessageDialog(null, "修改成功");}else{TeacherDAO.insertTeacher(tea);JOptionPane.showMessageDialog(null, "添加成功");}//3、调用TeacherManageUI的reflushTableTeacherManageUI.reflushTable();//4、关闭当前TeacherUIsetVisible(false);//5、清空UI数据clearUI();}});}public void clearUI(){sno.setText("");name.setText("");m.setSelected(true);course.setSelectedIndex(0);classis.setSelectedIndex(0);grade.setSelectedIndex(0);address.setText("");intime.setText("");}public void initTeacherUI(String id){TeacherDAO teaDAO =new TeacherDAO();TeacherDO tea =teaDAO.getTeacherBySno(id);sno.setText(tea.getSno());name.setText(tea.getSname());if(tea.getGender()!=null&&"男".equals(tea.getGender())){m.setSelected(true);}else{w.setSelected(true);}course.setSelectedItem(tea.getCourse());classis.setSelectedItem(tea.getClassis());grade.setSelectedItem(tea.getGrande());address.setText(tea.getAddress());SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String sintime = sdf.format(tea.getIntime());intime.setText(sintime);}public TeacherUI( TeacherManageUI TeacherManageUI){this.TeacherManageUI = TeacherManageUI;initListener();Box box = Box.createVerticalBox();//createVerticalBox() 创建一个从上到下显示其组件的 Box。LeftFlowLayoutPanel pno = new LeftFlowLayoutPanel();//新建面板pnopno.add(lsno);//职工号添加进面板ponpno.add(sno);//文本框添加进面板ponLeftFlowLayoutPanel pname = new LeftFlowLayoutPanel();//新建面板pnamepname.add(lname);//姓名添加进面板pnamepname.add(name);//文本框添加进面板pnameLeftFlowLayoutPanel pgender = new LeftFlowLayoutPanel();//新建面板pgenderpgender.add(lgender);//将性别添加进面板pgenderpgender.add(m);//单选按钮男添加进面板pgenderpgender.add(w);//单选按钮女添加进面板pgender//将性别的两个单选按钮放到一个组中ButtonGroup bg = new ButtonGroup();bg.add(m);bg.add(w);LeftFlowLayoutPanel pcourse = new LeftFlowLayoutPanel();//新建面板pcoursepcourse.add(lcourse);//教学课程添加进面板pcoursepcourse.add(course);//下拉列表添加进面板pcoursepcourse.add(lclassis);//教学班级添加进面板pcoursepcourse.add(classis);//下拉类表添加进面板pcourseLeftFlowLayoutPanel pgrade = new LeftFlowLayoutPanel();//新建面板pgradepgrade.add(lgrade);//教学年级添加进面板pgradepgrade.add(grade);//下拉类表添加进面板pgradeLeftFlowLayoutPanel paddress = new LeftFlowLayoutPanel();//新建面板paddresspaddress.add(laddress);//地址添加进面板addresspaddress.add(address);//文本框添加进面板addressLeftFlowLayoutPanel pintime = new LeftFlowLayoutPanel();//新建面板pintimepintime.add(lintime);//时间添加进面板pintimepintime.add(intime);//添加进面板pintimepintime.add(dateformat);//添加进面板pintimeJPanel pBtn = new JPanel();//新建面板pBtnpBtn.setLayout(new FlowLayout(FlowLayout.RIGHT));pBtn.add(finish);//完成按钮添加进面板pBtnpBtn.add(cancel);//取消按钮添加进面板pBtn//将面板分别添加进容器box中,从上到下box.add(pno);box.add(pname);box.add(pgender);box.add(pcourse);box.add(pgrade);box.add(paddress);box.add(pintime);box.add(pBtn);this.add(box); //设置JFrame的显示效果this.setTitle("教师管理系统");//标题/* this.setDefaultCloseOperation(EXIT_ON_CLOSE);//制定框架关闭时的操作*/ //this.setLocationRelativeTo(this);//制定组件的位置this.setLocationRelativeTo(null);//制定组件的位置this.pack();//大小自定义//this.setVisible(true);this.dispose();}//此方法实现布局管理统一向左class LeftFlowLayoutPanel extends JPanel{public LeftFlowLayoutPanel(){this.setLayout(new FlowLayout(FlowLayout.LEFT));}}}package DAO;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import util.JDBCUtil;import DO.LandingDO;/** * 这个类主要完成的工作是登陆表user的操作 * @author Administrator * */public class DatabaseLand {//添加新的账户信息public void insertMessage1(LandingDO landdo ){//1、连接数据库Connection conn = JDBCUtil.getConnection();//2、拼装sqlString sql = "insert into user (sid,password) values(?,?)";//3、创建一个sql执行对象PreparedStatement ps = null;try {ps = conn.prepareStatement(sql);ps.setString(1, landdo.getSid());ps.setString(2, landdo.getPassword());ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}finally{JDBCUtil.release(null, ps, conn);}}public LandingDO getCourseById(String sid){// //1、连接数据库Connection conn=JDBCUtil.getConnection();//2、拼装sqlString sql1 = "select * from user where sid= ?";//3、创建一个sql执行对象PreparedStatement ps = null;ResultSet rs= null;try {ps = conn.prepareStatement(sql1);ps.setString(1, sid);rs = ps.executeQuery();while(rs.next()){LandingDO stu = new LandingDO();stu.setSid(rs.getString("sid"));stu.setPassword(rs.getString("password"));return stu;}} catch (SQLException e) {e.printStackTrace();}finally{JDBCUtil.release(rs, ps, conn);}return null;}}package DAO;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.text.SimpleDateFormat;import java.util.Vector;import util.JDBCUtil;import DO.TeacherDO;/**数据表Teacher * 这个类主要完成的工作是对的操作 * @author Administrator * */public class TeacherDAO {public void insertTeacher(TeacherDO tea){//1、连接数据库Connection conn = JDBCUtil.getConnection();//2、拼装sqlString sql = "insert into teacher values(?,?,?,?,?,?,?,?)";//3、创建一个sql执行对象PreparedStatement ps = null;try {ps = conn.prepareStatement(sql);ps.setString(1, tea.getSno());ps.setString(2, tea.getSname());ps.setString(3, tea.getGender());ps.setString(4, tea.getCourse());ps.setString(5, tea.getClassis());ps.setString(6, tea.getGrande());ps.setString(7, tea.getAddress());ps.setDate(8, new java.sql.Date(tea.getIntime().getTime()));ps.executeUpdate();} catch (SQLException e) {// TODO 自动生成 catch 块e.printStackTrace();}finally{JDBCUtil.release(null, ps, conn);}}public Vector getAllTeacher(){Vector result = new Vector();// 1、连接数据库Connection conn = JDBCUtil.getConnection();//2、拼装sqlString sql = "select * from teacher";//3、创建一个sql执行对象PreparedStatement ps = null;ResultSet rs = null;try {ps = conn.prepareStatement(sql);rs = ps.executeQuery();while(rs.next()){Vector record = new Vector();//Vector record = new Vector();record.add(rs.getString("sno"));record.add(rs.getString("sname"));record.add(rs.getString("gender"));record.add(rs.getString("course"));record.add(rs.getString("classis"));record.add(rs.getString("grande"));record.add(rs.getString("address"));SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String formatDate = sdf.format(rs.getDate("intime"));record.add(formatDate);result.add(record);}} catch (SQLException e) {// TODO 自动生成 catch 块e.printStackTrace();}finally{JDBCUtil.release(rs, ps, conn);}return result;}public Vector queryTeacherByName(String query){Vector result = new Vector();// 1、连接数据库Connection conn = JDBCUtil.getConnection();//2、拼装sqlString sql = "select * from teacher where sname like ?";//3、创建一个sql执行对象PreparedStatement ps = null;ResultSet rs = null;try {ps = conn.prepareStatement(sql);ps.setString(1, "%"+query+"%");System.out.println("query=" +query);rs = ps.executeQuery();while(rs.next()){Vector record = new Vector();record.add(rs.getString("sno"));record.add(rs.getString("sname"));record.add(rs.getString("gender"));record.add(rs.getString("course"));record.add(rs.getString("classis"));record.add(rs.getString("grande"));record.add(rs.getString("address"));SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String formatDate = sdf.format(rs.getDate("intime"));record.add(formatDate);result.add(record);}} catch (SQLException e) {// TODO 自动生成 catch 块e.printStackTrace();}finally{JDBCUtil.release(rs, ps, conn);}System.out.println(result.size());return result;}public void deleteBySno(String sno){// 1、连接数据库Connection conn = JDBCUtil.getConnection();//2、拼装sqlString sql = "delete from teacher where sno=?";//3、创建一个sql执行对象PreparedStatement ps = null;try {ps = conn.prepareStatement(sql);ps.setString(1, sno);ps.executeUpdate();} catch (SQLException e) {// TODO 自动生成 catch 块e.printStackTrace();}finally{JDBCUtil.release(null, ps, conn);}}public TeacherDO getTeacherBySno(String sno){// 1、连接数据库Connection conn = JDBCUtil.getConnection();//2、拼装sqlString sql = "select * from teacher where sno = ?";//3、创建一个sql执行对象PreparedStatement ps = null;ResultSet rs = null;try {ps = conn.prepareStatement(sql);ps.setString(1, sno);rs = ps.executeQuery();if(rs.next()){TeacherDO tea = new TeacherDO();tea.setSno(rs.getString("sno"));tea.setSname(rs.getString("sname"));tea.setGender(rs.getString("gender"));tea.setCourse(rs.getString("course"));tea.setClassis(rs.getString("classis"));tea.setGrande(rs.getString("grande"));tea.setAddress(rs.getString("address"));tea.setIntime(rs.getDate("intime"));return tea;}} catch (SQLException e) {// TODO 自动生成 catch 块e.printStackTrace();}finally{JDBCUtil.release(rs, ps, conn);}return null;}public void updateTeacher(TeacherDO tea){// 1、连接数据库Connection conn = JDBCUtil.getConnection();//2、拼装sqlString sql = "update teacher set sname=?,gender=?,course=?,classis=?,grande=?,address=?,intime=? where sno=?";//3、创建一个sql执行对象PreparedStatement ps = null;try {ps = conn.prepareStatement(sql);ps.setString(1, tea.getSname());ps.setString(2, tea.getGender());ps.setString(3, tea.getCourse());ps.setString(4, tea.getClassis());ps.setString(5, tea.getGrande());ps.setString(6, tea.getAddress());ps.setDate(7, new java.sql.Date(tea.getIntime().getTime()));ps.setString(8, tea.getSno());ps.executeUpdate();} catch (SQLException e) {// TODO 自动生成 catch 块e.printStackTrace();}finally{JDBCUtil.release(null, ps, conn);}}}package MainDemo;import view.landingUI;import DAO.DatabaseLand;import DO.LandingDO;public class Main {public static void main(String[] args) {//new TeacherManageUI();new landingUI();/*DatabaseLand insert = new DatabaseLand();insert.insertMessage1(new LandingDO("70034111","11"));*/}}
0 0
原创粉丝点击