1.登陆界面:
package com.zbdx.ui; import com.zbdx.dao.ManagerDao; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Login extends JFrame { private JTextField userNameField = new JTextField(); private JPasswordField passwordField = new JPasswordField(); private JButton loginBtn = new JButton("登录"); private JButton resetBtn = new JButton("重置"); private JLabel userNameText = new JLabel("用户名:", JLabel.CENTER); private JLabel passwordText = new JLabel("密 码:", JLabel.CENTER); private JLabel titleText = new JLabel("员工管理系统"); //无参构造 public Login() { //创建窗体对象 setTitle("登录"); //设置字体 Font font = new Font("新宋体", Font.BOLD, 25); //获取当前窗体的容器 Container container = getContentPane(); //设置布局管理器 container.setLayout(null); //设置上面定义好的组件的显示位置 titleText.setBounds(250, 20, 200, 50); titleText.setFont(new Font("新宋体", Font.BOLD, 30)); userNameText.setBounds(125, 100, 125, 50); userNameText.setFont(font); userNameField.setBounds(250, 100, 250, 50); userNameField.setFont(font); passwordText.setBounds(125, 200, 125, 50); passwordText.setFont(font); passwordField.setBounds(250, 200, 250, 50); passwordField.setFont(font); loginBtn.setBounds(225, 300, 125, 50); loginBtn.setFont(font); resetBtn.setBounds(375, 300, 125, 50); resetBtn.setFont(font); //向容器中添加title文本 container.add(titleText); container.add(userNameText); container.add(userNameField); container.add(passwordText); container.add(passwordField); container.add(loginBtn); container.add(resetBtn); //获取屏幕的大小 Toolkit toolkit = Toolkit.getDefaultToolkit(); int width = toolkit.getScreenSize().width; int height = toolkit.getScreenSize().height; //设置窗体的显示位置和大小 setBounds((width - 700) / 2, (height - 500) / 2, 700, 500); //显示窗体 setVisible(true); loginBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String userName = userNameField.getText().trim();//获取用户名输入的内容并去掉空格 String password = passwordField.getText().trim();//获取密码输入的内容并去掉空格 //判断用户名和密码是否为空 if ("".equals(userName)) { JOptionPane.showMessageDialog(null, "用户名不能为空..."); } else if ("".equals(password)) { System.out.println("密码不能为空"); JOptionPane.showMessageDialog(null, "密码不能为空..."); } else { //根据用户输入的用户名和密码从数据库查询相关的数据 boolean result = ManagerDao.login(userName, password); //判断是否登录成功 if (result) { //登录成功进行页面的跳转--弹出主页面 JOptionPane.showMessageDialog(null, "登陆成功"); new Main(); //让登录界面隐藏 setVisible(false); } else { JOptionPane.showMessageDialog(null, "用户名或者密码错误..."); } } } }); resetBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { userNameField.setText(""); passwordField.setText(""); } }); } public static void main(String[] args) { new Login(); } }
package com.zbdx.dao; import com.zbdx.util.DBUtils; import java.sql.*; //用户管理持久层类 public class ManagerDao { //根据用户名和密码查询数据库中的数据 public static boolean login(String userName,String password){ boolean result = false; try { //获取数据库连接对象 Connection connection = DBUtils.getConnection(); //编写sql语句 String sql = "select * from manager where mname = ? and mpsw = ?"; //获取sql语句的对象 PreparedStatement pst = connection.prepareStatement(sql); pst.setString(1,userName); pst.setString(2,password); //执行sql语句 ResultSet resultSet = pst.executeQuery();//查询的结果集 //从结果集中获取数据 while(resultSet.next()){ result = true; } //释放资源 DBUtils.close(connection,pst,resultSet); } catch (SQLException ex) { ex.printStackTrace(); } return result; } }
2.主界面:
package com.zbdx.ui; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Main extends JFrame {//窗体的子类 private CardLayout cardLayout = null; private JTable table = null; //定义两个参数用于传参 private JTable jTable = null; private DefaultTableModel model = null; //无参构造 public Main() { //创建窗体对象 setTitle("基本信息查询"); //设置字体 Font font = new Font("新宋体", Font.PLAIN, 30); //获取当前窗体的容器 Container container = getContentPane(); //设置布局管理器 卡片布局 cardLayout = new CardLayout(); container.setLayout(cardLayout); //添加菜单 addMenu(); //添加功能页面 //container.add("dept", new DeptManager()); container.add("emp",new EmpManager()); //获取屏幕的大小 Toolkit toolkit = Toolkit.getDefaultToolkit(); int width = toolkit.getScreenSize().width; int height = toolkit.getScreenSize().height; //设置窗体的显示位置大小 setBounds((width - 1000) / 2, (height - 800) / 2, 1000, 800); //显示窗体 setVisible(true); } //给主界面添加菜单 public void addMenu() { // Container container = getContentPane(); // //设置布局管理器 卡片布局 // cardLayout = new CardLayout(); // container.setLayout(cardLayout); Font font = new Font("新宋体", Font.PLAIN, 30);//指定文字的 JMenuBar jMenuBar = new JMenuBar();//用来添加菜单的 //实例化菜单 //第一个菜单及其子菜单 JMenu first = new JMenu("系统管理"); first.setFont(font); //添加子菜单 JMenuItem password = new JMenuItem("修改密码"); password.setFont(font); JMenuItem exit = new JMenuItem("退出程序"); exit.setFont(font); password.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //弹出一个新的窗口 } }); exit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0);//退出程序 } }); first.add(password); first.add(exit); //第二个菜单及其子菜单 JMenu second = new JMenu("增加信息"); second.setFont(font); //添加子菜单 JMenuItem empM = new JMenuItem("增加员工信息"); empM.setFont(font); JMenuItem deptM = new JMenuItem("增加部门信息"); deptM.setFont(font); empM.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); deptM.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); second.add(empM); second.add(deptM); //第三个菜单及其子菜单 JMenu third = new JMenu("信息查询"); third.setFont(font); //添加子菜单 JMenuItem deptS = new JMenuItem("部门信息查询"); deptS.setFont(font); JMenuItem empS = new JMenuItem("员工信息查询"); empS.setFont(font); third.add(deptS); third.add(empS); deptS.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //container.add("dept",new DeptManager()); } }); empS.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //container.add("emp",new EmpManager()); } }); //第四个菜单及其子菜单 JMenu forth = new JMenu("帮助"); forth.setFont(font); //第五个菜单及其子菜单 JMenu fifth = new JMenu("关于"); fifth.setFont(font); //将菜单放入JMenuBar李 jMenuBar.add(first); jMenuBar.add(second); jMenuBar.add(third); jMenuBar.add(forth); jMenuBar.add(fifth); setJMenuBar(jMenuBar);//将菜单添加到左上方 } public static void main(String[] args) { new Main(); } }
package com.zbdx.ui; import com.zbdx.dao.EmpDao; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.awt.*; import java.awt.event.*; public class EmpManager extends JPanel { private static final long serialVersionUID = 1L; //添加信息 private JLabel showMsg = new JLabel("员工基本信息查询"); private JLabel empnoLab = new JLabel("员工编号:"); private JLabel enameLab = new JLabel("员工姓名:"); //两个输入框 private JTextField empnoField = new JTextField();//同来填写员工编号的 private JTextField enameField = new JTextField();//同来填写员工姓名的 //查询按钮 private JButton searchBtn = new JButton("查询"); //表格 private JTable table = null; //执行表格列名称 private String[] colsName = {"员工编号", "员工名称", "工作岗位", "薪资", "部门编号", "雇佣日期"}; private DefaultTableModel dtm = null;//主要是用来封装数据的 //定义两个属性用于传参 private JTable jTable = null; private DefaultTableModel model = null; public EmpManager() { this.setLayout(null); //实例化其他内容 Font f = new Font("宋体", Font.PLAIN, 25); empnoLab.setBounds(20, 100, 300, 50); empnoLab.setFont(f); add(empnoLab); enameLab.setBounds(20, 150, 300, 50); enameLab.setFont(f); add(enameLab); //添加文本输入框 empnoField.setBounds(150, 100, 150, 40); empnoField.setFont(f); add(empnoField); enameField.setBounds(150, 150, 150, 40); enameField.setFont(f); add(enameField); //添加按钮 searchBtn.setBounds(150, 250, 150, 50); searchBtn.setFont(new Font("新宋体", Font.PLAIN, 25)); add(searchBtn); //添加提示 showMsg.setBounds(500, 20, 300, 50); showMsg.setFont(new Font("新宋体", Font.BOLD, 30)); add(showMsg); //添加Table dtm = new DefaultTableModel() {//可以消除内容双击获取焦点 @Override public boolean isCellEditable(int row, int column) { return false;//内容不可编辑 } }; table = new JTable(dtm); JScrollPane pane = new JScrollPane(); pane.getViewport().add(table); dtm.setColumnCount(6); dtm.setColumnIdentifiers(colsName); pane.setBounds(400, 100, 500, 400); add(pane); //给要传值的内容赋值 this.jTable = table; this.model = dtm; //给内容添加边框 empnoField.setBorder(BorderFactory.createLineBorder(Color.BLACK)); enameField.setBorder(BorderFactory.createLineBorder(Color.BLACK)); searchBtn.setBorder(BorderFactory.createLineBorder(Color.BLACK)); pane.setBorder(BorderFactory.createLineBorder(Color.BLACK)); //获取数据库的数据渲染到表格中 EmpDao.getAllEmps(dtm); //给表格中的数据添加事件 table.addMouseListener(new MouseListener() { @Override public void mouseReleased(MouseEvent e) {//弹起鼠标执行此方法 } @Override public void mousePressed(MouseEvent e) {//按下鼠标执行的方法 } @Override public void mouseExited(MouseEvent e) {//失去焦点的时候执行此方法 } @Override public void mouseEntered(MouseEvent e) {//获取焦点则执行此方法 } @Override public void mouseClicked(MouseEvent e) {//完成点击执行此方法 } }); //给查询按钮设置点击事件 searchBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } }); } public JTable getjTable() { return jTable; } public DefaultTableModel getModel() { return model; } }
package com.zbdx.dao; import com.zbdx.util.DBUtils; import javax.swing.table.DefaultTableModel; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Vector; //持久层操作 public class EmpDao { //查询全部部门信息 public static void getAllEmps(DefaultTableModel dtm) { try { //获取数据库连接对象 Connection connection = DBUtils.getConnection(); //编写sql语句 String sql = "select * from emp"; //获取sql语句的对象 PreparedStatement pst = connection.prepareStatement(sql); //执行sql语句 ResultSet resultSet = pst.executeQuery();//查询的结果集 //从结果集中获取数据 while (resultSet.next()) { Vector<String> vr = new Vector<>(); vr.add(resultSet.getString("empno")); vr.add(resultSet.getString("ename")); vr.add(resultSet.getString("job")); vr.add(resultSet.getString("sal")); vr.add(resultSet.getString("deptno")); vr.add(resultSet.getString("deptno")); //将读取出来的数据显示到表格中 dtm.addRow(vr); } //释放自愿 DBUtils.close(connection, pst, resultSet); } catch (SQLException ex) { ex.printStackTrace(); } } }