教育路上
摘要:java的ActionListener事件监听匿名内部类和actionPerformed方法事件监听方法的使用。以下是我们为大家整理的,相信大家阅读完后肯定有了自己的选择吧。
2021-06-03 22:05刘永莘
package cn.org.lianxiche; import java.awt.BorderLayout; import java.awt.Font; import java.awt.Graphics; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.HashMap; import java.util.Set; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JTable; import javax.swing.JTextField; public class Reg extends JFrame{ //用于主界面创建变量 private JButton reg; //主界面的注册按钮 private JButton show; //主界面的查看按钮 private JButton edit; //主界面的修改按钮 private JButton del; //主界面的删除按钮 private JPanel up; //主界面中北方的容器,用于保存显示文字的标签 private JPanel down; //主界面中南方的容器,用于保存注册、查看、修改、删除按钮 private JPanel cnPanel; //主界面中间用于显示图片 private JLabel uptext; //主界面用于显示用户注册见面文字的标签 //用于添加菜单变量 private JMenuBar menuBar; //定义一个菜单栏 private JMenu menu; //定义一个菜单 private JMenuItem itemReg; //定义一个用于注册的菜单项 private JMenuItem itemShow; //定义一个用于查看的菜单项 private JMenuItem itemEdit; //定义一个用于修改的菜单项 private JMenuItem itemDel; //定义一个用于删除的菜单项 private JMenuItem itemExit; //定义一个用于关闭窗体的菜单项 //用于注册弹出框界面的变量 private JDialog dialogReg; //用户注册界面 private JButton regsave; //用户注册界面的提交注册按钮 private JLabel regResult; //用于注册界面的提示文字标签 private JTextField regUser; //用户注册界面的账号输入文本框 private JTextField regPass; //用户注册界面的密码输入文本框 //用于查看弹出框界面的变量 private JDialog dialogShow; //用户查看界面 private JPanel panel; //查看界面的容器 //用于修改密码弹出界面的变量 private JDialog dialogEdit; //修改密码界面 private JTextField editUser; //修改密码界面的账号输入文本框 private JTextField editPass; //修改密码界面的密码输入文本框 private JLabel editResult; //修改密码界面的提示标签 private JButton editBT; //修改密码界面的确认修改按钮 //用于删除用户弹出界面的变量 private JDialog dialogDel; //删除用户界面 private JTextField delUser; //删除用户界面的账号输入文本框 private JTextField delPass; //删除用户界面的密码输入文本框 private JLabel delResult; //删除用户界面的提示文字标签 private JButton delBT; //删除用户界面的确认删除按钮 //用于数据库连接变量 private Statement stmt = null; private ResultSet rs = null; private Connection conn = null; public Reg() { //窗体初始化 setSize(400,300); setLocation(300,200); setResizable(false); //设置窗体不可拉伸 reg=new JButton("注册"); show=new JButton("查看"); edit=new JButton("修改"); del=new JButton("删除"); setLayout(new BorderLayout()); //设置窗体的布局为边界布局 up=new JPanel(); //创建一个容器放置于窗体的北方,用于添加提示标签 cnPanel=new JPanel() { //创建一个容器并设置容器的背景,放置于窗体的中部 @Override protected void paintComponent(Graphics g) { super.paintComponent(g); ImageIcon img = new ImageIcon("D://相册//头像//薛之谦.jpg"); img.paintIcon(this, g, 0, 0); } }; down=new JPanel(); //创建一个容器用于添加注册、查看、修改、删除按钮 add(up,BorderLayout.NORTH); //北方 add(cnPanel,BorderLayout.CENTER); //中间 add(down,BorderLayout.SOUTH); //南方 down.add(reg); down.add(show); down.add(edit); down.add(del); uptext=new JLabel("用户注册界面"); uptext.setFont(new Font("宋体",Font.PLAIN,30)); //设置窗体上方文字的大小 up.add(uptext); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体可以关闭 //为主界面添加菜单 menuBar=new JMenuBar(); //创建一个菜单栏对象 setJMenuBar(menuBar); //把菜单栏设置到窗体的最上方 menu=new JMenu("菜单"); //创建一个菜单,用于放置到菜单栏 menuBar.add(menu); //把菜单添加到菜单栏 itemReg=new JMenuItem("注册用户"); itemEdit=new JMenuItem("修改密码"); itemDel=new JMenuItem("删除用户"); itemExit=new JMenuItem("关闭"); itemReg.addActionListener(new ActionListener() {// @Override public void actionPerformed(ActionEvent e) { dialogReg.setVisible(true); } }); itemEdit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dialogEdit.setVisible(true); } }); itemDel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dialogDel.setVisible(true); } }); itemExit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { setVisible(false); System.exit(0);//正常退出 } }); menu.add(itemReg); menu.addSeparator(); //添加分割符 menu.add(itemEdit); menu.add(itemDel); menu.addSeparator(); //添加分割符 menu.add(itemExit); setVisible(true); //设置窗体可见 regDialog(); //用户注册界面初始化方法 editDialog(); //修改密码界面初始化方法 delDialog(); //删除用户界面初始化方法 //注册界面 reg.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dialogReg.setVisible(true); } }); //提交注册监听 regsave.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String usersave=regUser.getText().trim(); //获取注册界面账号文本框的输入,并去掉开头和结尾的空格 String passsave=regPass.getText().trim(); //获取注册界面密码文本框的输入,并去掉开头和结尾的空格 if(usersave.length()<=0||usersave.length()>12) {//对账号输入框的内容判断,内容限制长度为1到12,如有误则结束该监听 regResult.setText("账号输入有误"); return; } if(passsave.length()<=0||passsave.length()>12) {//对密码输入框的内容判断,内容限制长度为1到12,如有误则结束该监听 regResult.setText("密码输入有误"); return; } String [] arr=selectUserName(); //通过连接数据库方法获取数据库中存在的用户数组 for(String user01:arr) { //对用户数组进行遍历 if(usersave.equals(user01)) { //判断输入的账号是否与数据库中的账号重复,若是则输出提示结束方法 regResult.setText("用户名重复"); return; } } regUser.setText(""); //若输入无误后就把账号文本框设置为空 regPass.setText("");//若输入无误后就把密码文本框设置为空 insertUser(usersave,passsave); //使用连接数据库的方法向数据库中插入用户注册的用户 regResult.setText("用户名注册成功"); } }); //查看用户名 show.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { panel=new JPanel() { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); ImageIcon img = new ImageIcon("D://相册//头像//薛之谦02.jpg"); img.paintIcon(this, g, 0, 0); } }; Object [] tabletop= {"用户名","密码"}; Object [][] tableuser=readUser(); //连接数据库获取用户 JTable table=new JTable(tableuser, tabletop); //创建一个表对象 panel.add(table); dialogShow=new JDialog(Reg.this,true); dialogShow.setTitle("显示用户名"); dialogShow.setSize(200, 200); dialogShow.setLocation(300, 300); dialogShow.add(panel); dialogShow.setVisible(true); } }); //修改密码 edit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dialogEdit.setVisible(true); } }); //提交修改密码 editBT.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String usersave=editUser.getText().trim(); String passsave=editPass.getText().trim(); if(passsave.equals("")||passsave.equals(null)) { //判断输入的密码是否为空的,若是则结束该监听 editResult.setText("密码修改失败"); return; } boolean is=editPass(usersave,passsave); //通过连接数据库方法去修改指定用户的密码,若修改成功则返回true if(is) { //通过返回的值来判断是否修改成功 editResult.setText("密码修改成功"); editUser.setText(""); editPass.setText(""); }else { editResult.setText("密码修改失败"); editPass.setText(""); } } }); //删除用户按钮监听 del.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dialogDel.setVisible(true); } }); //为删除用户按钮添加监听 delBT.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String usersave=delUser.getText().trim(); String passsave=delPass.getText().trim(); if(passsave.equals("")||passsave.equals(null)||usersave.equals("")||usersave.equals(null)) { delResult.setText("用户删除失败"); return; } boolean is=delUser(usersave,passsave); //通过连接数据库方法来删除指定账号和密码的用户,若删除成功则返回true if(is) { delResult.setText("用户删除成功"); delPass.setText(""); delUser.setText(""); }else { delResult.setText("用户删除失败"); } } }); } //注册界面初始化方法 private void regDialog() { dialogReg = new JDialog(Reg.this, true ); dialogReg.setLayout(new GridLayout(3,2)); dialogReg.setTitle("用户注册"); dialogReg.setSize(300, 200); dialogReg.setLocation(50, 50); JLabel usertext=new JLabel("用户名:"); JLabel passtext=new JLabel("密 码:"); regUser=new JTextField(); regPass=new JTextField(); regsave=new JButton("提交注册"); regResult=new JLabel(); dialogReg.add(usertext); dialogReg.add(regUser); dialogReg.add(passtext); dialogReg.add(regPass); dialogReg.add(regsave); dialogReg.add(regResult); } //修改密码界面初始化方法 private void editDialog() { dialogEdit = new JDialog(Reg.this, true ); dialogEdit.setLayout(new GridLayout(3,2)); dialogEdit.setTitle("密码修改"); dialogEdit.setSize(300, 200); dialogEdit.setLocation(50, 50); JLabel usertext=new JLabel("用户名:"); JLabel passtext=new JLabel("密 码:"); editUser=new JTextField(); editPass=new JTextField(); editResult=new JLabel(); editBT=new JButton("确认修改"); dialogEdit.add(usertext); dialogEdit.add(editUser); dialogEdit.add(passtext); dialogEdit.add(editPass); dialogEdit.add(editBT); dialogEdit.add(editResult); } //删除用户界面初始化方法 private void delDialog() { dialogDel = new JDialog(Reg.this, true ); dialogDel.setLayout(new GridLayout(3,2)); dialogDel.setTitle("用户删除"); dialogDel.setSize(300, 200); dialogDel.setLocation(50, 50); JLabel userLabel=new JLabel("用户名:"); JLabel passLabel=new JLabel("密码:"); delUser=new JTextField(); delPass=new JTextField(); delBT=new JButton("确认删除"); delResult=new JLabel(); dialogDel.add(userLabel); dialogDel.add(delUser); dialogDel.add(passLabel); dialogDel.add(delPass); dialogDel.add(delBT); dialogDel.add(delResult); } //读取数据库用户,并返回包含了用户的二维数组 private Object[][] readUser(){ Object[][] tableuser = null; try { SQL_Init(); // 4.使用Statement执行SQL语句。 int count=0; String sqlall = "select count(*) as result from user00"; rs = stmt.executeQuery(sqlall); while(rs.next()) { count = rs.getInt(1); } tableuser= new Object[count+1][]; String sql = "select * from user00"; rs = stmt.executeQuery(sql); int i=1; tableuser[0]=new Object[]{"用户名","密码"}; while (rs.next()) { String user = rs.getString("u_user"); String pass = rs.getString("u_pass"); tableuser[i]=new Object[]{user,pass}; i++; } } catch (Exception e) { e.printStackTrace(); } finally { SQL_OFF(); } return tableuser; } //修改用户密码,并返回一个布尔值,用于判断是否修改成功 private boolean editPass(String user,String pass){ boolean is=false; int number=0; try { SQL_Init(); // 4.使用Statement执行SQL语句。 int count=0; String sqlall = "update user00 set u_pass='"+pass+"' where u_user='"+user+"'"; number=stmt.executeUpdate(sqlall); if(number>0) { is=true; } } catch (Exception e) { e.printStackTrace(); } finally { // 6.回收数据库资源 SQL_OFF(); } return is; } //删除用户,并返回一个布尔值,用于判断是否删除成功 private boolean delUser(String user,String pass){ boolean is=false; int number=0; try { SQL_Init(); // 4.使用Statement执行SQL语句。 int count=0; String sqlall = "delete from user00 where u_user='"+user+"' and u_pass='"+pass+"'"; number=stmt.executeUpdate(sqlall); if(number>0) { is=true; } } catch (Exception e) { e.printStackTrace(); } finally { // 6.回收数据库资源 SQL_OFF(); } return is; } //插入数据库用户 private void insertUser(String user,String pass) { try { SQL_Init(); // 4.使用Statement执行SQL语句。 String sql = "insert into user00(u_user,u_pass) value('"+user+"','"+pass+"')"; stmt.executeUpdate(sql); } catch (Exception e) { e.printStackTrace(); } finally { // 6.回收数据库资源 SQL_OFF(); } } //查看数据库中的所有用户,并返回一个包含了所有用户的一维数组 private String [] selectUserName() { String [] arrName=null; try { SQL_Init(); String sql01="select count(u_user) from user00"; rs=stmt.executeQuery(sql01); int n=0; while(rs.next()) { n=rs.getInt(1); } arrName=new String[n]; String sql02="select u_user from user00"; rs=stmt.executeQuery(sql02); int i=0; while(rs.next()) { arrName[i]=rs.getString("u_user"); i++; } }catch(Exception e) { e.printStackTrace(); } return arrName; } //用于连接数据库 private void SQL_Init() { try { // 1. 注册数据库的驱动 Class.forName("com.mysql.jdbc.Driver"); // 2.通过DriverManager获取数据库连接 String url = "jdbc:mysql://localhost:3306/javatest"; String username = "root"; String password = "123456"; conn = DriverManager.getConnection(url, username, password); // 3.通过Connection对象获取Statement对象 stmt = conn.createStatement(); }catch(Exception e) { e.printStackTrace(); } } //用于关闭数据库资源 private void SQL_OFF() { // 回收数据库资源 if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } public static void main(String args[]) { new Reg(); } }
访客的评论 2024/03/28 18:06
文中描述的是准确的吗,如何报名!