一个精美的登录界面原来是这样做的
创始人
2024-05-07 20:05:59

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

本文由 秩沅 原创

收录于专栏 玩归玩闹归闹,别拿java开玩笑


——————————————————
⭐相关文章⭐

-通过窗口看世界之 界面制作如此简单

——————————————————


文章目录

  • 登录和注册界面设计与实现
    • 👨‍💻数据库的建立
    • 👨‍💻注册界面效果图
    • 👨‍💻登录界面效果图
    • 👨‍💻测试结果


登录和注册界面设计与实现


👨‍💻数据库的建立


在注册信息之前,首先时来创建数据库和表,用来存储用户的姓名(name),账户(acount),密码(password),订房信息(huose),Navicat For MySQL中显示如图所示。

在这里插入图片描述


👨‍💻注册界面效果图


注册界面首先实现GUI布局设计,继承JFrame类新建窗口,在主面板上实现GUI设计,用到JFieldText,JButton,JLabel等组件进行布局。设计效果图如下图4.1所示。
在这里插入图片描述


参考代码:

注册界面功能用以下三个方法,分别为构造函数SQL()进行注册信息主面板调用, SQLGUI()方法进行界面GUI设计和布局,connectSQL()进行数据库的连接,并把用户输入的信息存储到数据库当中。注册信息界面方法表如下表4.1所示。

在这里插入图片描述

public SQL() {setTitle("注册信息");setBounds(600, 135, 300, 500);SQLGUI(); setResizable(false);  //禁止最大化setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}//注册信息面板private void SQLGUI() {//增加主面板JPanel  JPSQL ;JPSQL = new JPanel();setContentPane(JPSQL);JPSQL.setBorder(BorderFactory.createLineBorder(Color.BLACK,6)); //设置一个带有颜色的边界和其宽度setContentPane(JPSQL);JPSQL.setLayout(null);   //JPanel的默认布局--FollowLayout//添加标签JLabel logo, name , acount , password ;logo = new JLabel("新用户注册");name = new JLabel("昵称:");acount = new JLabel("账号:");password = new JLabel("密码:");logo.setBounds(90,30, 100,80);logo.setFont(new Font("华文琥珀",Font.BOLD,18));name.setBounds(20,100, 91,50);name.setFont(new Font("方正舒体",Font.BOLD,15));acount.setBounds(20,150, 91,50);acount.setFont(new Font("方正舒体",Font.BOLD,15));password.setBounds(20,200, 91,50);password.setFont(new Font("方正舒体",Font.BOLD,15));name.setOpaque(false);JPSQL.add(logo);JPSQL.add(name);JPSQL.add(acount);JPSQL.add(password);//添加输入框JTextField Field1 , Field2 , Field3;Field1 = new JTextField(20);Field2 = new JTextField(20);Field3 = new JTextField(20);Field1.setBounds(60,115, 180,25);Field2.setBounds(60,165, 180,25);Field3.setBounds(60,215, 180,25);JPSQL.add(Field1);JPSQL.add(Field2);JPSQL.add(Field3);//添加按钮,JButton reSQL;reSQL = new JButton("注册信息");reSQL.setForeground(Color.BLACK);  //设置前景颜色(作用于字体)reSQL.setFont(new Font("仿宋", Font.BOLD, 12));reSQL.setBackground(Color.gray);   //设置背景颜色reSQL.setBounds(100,259, 90,30);JPSQL.add(reSQL);//插入背景图片ImageIcon backgruonp ;JLabel image ;backgruonp = new ImageIcon("注册信息背景图片.png");image = new JLabel(backgruonp);image.setBounds(5,5,275,452);JPSQL.add(image);//提取信息reSQL.addMouseListener(new MouseListener() {@Overridepublic void mousePressed(MouseEvent e) { //单击注册按钮时监听信息if(e.getSource() == reSQL && e.getButton() == MouseEvent.BUTTON1 ){Mname     = Field1.getText();Macount   = Field2.getText();Mpassword = Field3.getText();System.out.println(Mpassword.length());if(Mpassword.length() < 6){ //增加提示窗口JFrame inform = new JFrame();inform.setTitle("提示");inform.setBounds(620, 305, 322,100);JLabel occ = new JLabel("请补全注册信息,设置6位数以上密码!");occ.setFont(new Font("华文行楷",Font.BOLD,18));inform.add(occ);setResizable(true);  //禁止最大化inform.setVisible(true);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}else {//将信息存储到数据库connectSQL();}}}@Overridepublic void mouseClicked(MouseEvent e) {}@Overridepublic void mouseReleased(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}@Overridepublic void mouseEntered(MouseEvent e) {}});}//将信息存储到数据库public void connectSQL(){Connection nect = null;try {    //首先连接数据库String  a ="jdbc:mysql://localhost/CMession?"+"useSSL = true & serverTimezone = GMT &characterEncoding = utf-8 ";		       nect = DriverManager.getConnection(a,"root","l20011223");System.out.println("连接成功");} catch (SQLException e1) {e1.printStackTrace();}Statement sql = null;try {sql = nect.createStatement();   //声明数据库sql.execute("insert into  passCard  values('"+Mname+"','"+Macount+"','"+Mpassword+"',' ') ;");} catch (SQLException e1) { e1.printStackTrace(); } try {nect.close();System.out.println("已关闭连接");} catch (SQLException e1){e1.printStackTrace();}dispose();//增加提示窗口JFrame inform = new JFrame();inform.setTitle("提示");inform.setBounds(620, 305, 280,100);JLabel occ = new JLabel("您已注册成功,请重新登录!");occ.setFont(new Font("华文行楷",Font.BOLD,18));inform.add(occ);setResizable(true);  //禁止最大化inform.setVisible(true);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}
}

👨‍💻登录界面效果图


登录界面首先也是实现GUI布局设计,继承JFrame类新建窗口,在主面板上实现GUI设计,用到JFieldText,JButton,JLabel等组件进行布局。设计效果图如下图所示。

在这里插入图片描述


代码参考:

登录界面功能用以下三个方法,分别为构造函数 GUI()进行登录界面主面板的创建,mainpanel()方法进行登录界面GUI设计和布局美化,induage()方法,进行数据库的连接,并判断用户输入的账号密码是否与数据库中的一致。注册信息界面方法表如下表4.2所示。

在这里插入图片描述

  //主面板的创建public  GUI (){mainpanel();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void mainpanel(){//设置主面板的布局和美观setTitle("一站知常德");setBounds(300,100,1000,550);setResizable(false);  //禁止最大化//setLocationRelativeTo(null);           //居中	    //设置布局JPanel MJPanel ;MJPanel = new JPanel();MJPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK,15)); //设置一个带有颜色的边界和其宽度setContentPane(MJPanel);MJPanel.setLayout(null);   //JPanel的默认布局--FollowLayout//设置账号密码标签JLabel ANumber , PNumber;Font bold = new Font("华文琥珀",Font.BOLD,25);ANumber =  new JLabel("账号");PNumber =  new JLabel("密码");ANumber.setFont(bold);  //设置字体PNumber.setFont(bold);  //设置字体ANumber.setBounds(351, 300, 91, 50);PNumber.setBounds(351, 360, 91, 50);// ANumber .setOpaque(false);// PNumber .setOpaque(false);MJPanel.add(ANumber);MJPanel.add(PNumber);//设置输入框ANField = new JTextField(20);PNField = new JPasswordField(20);ANField.setBounds(420, 315, 150, 25);PNField.setBounds(420, 375, 150, 25);//ANField.setText("请输入账号");//PNField.setText("请输入密码");MJPanel.add(ANField);MJPanel.add(PNField);//设置登录和注册按钮JButton record,register;record = new JButton("登录");register = new JButton("注册");record.setForeground(Color.BLACK);  //设置前景颜色(作用于字体)register.setForeground(Color.BLACK);record.setFont(new Font("仿宋", Font.BOLD, 12));register.setFont(new Font("仿宋", Font.BOLD, 12));record.setBackground(Color.gray);   //设置背景颜色register.setBackground(Color.gray);record.setBounds(380,420,70,30);register.setBounds(490,420,70,30);MJPanel.add(record);MJPanel.add(register);//插入背景图ImageIcon backgruonp ;JLabel image ;backgruonp = new ImageIcon("常德风景图片.png");image = new JLabel(backgruonp);image.setBounds(15,15,956,483);MJPanel.add(image);//设置注册信息跳转界面register.addMouseListener(new MouseListener() {@Overridepublic void mousePressed(MouseEvent e) {//单击注册按钮if(e.getSource() == register && e.getButton() == MouseEvent.BUTTON1 ){SQL restore = new SQL();restore.setVisible(true);}}@Overridepublic void mouseClicked(MouseEvent e) {}@Overridepublic void mouseReleased(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}@Overridepublic void mouseEntered(MouseEvent e) {}});//设置登录信息跳转界面record.addMouseListener(new MouseListener() {@Overridepublic void mousePressed(MouseEvent e) {//单击登录按钮if(e.getSource() == record && e.getButton() == MouseEvent.BUTTON1 ){	 if( induage() == true){  @SuppressWarnings("unused")SystemGUI mainGUI = new SystemGUI(ANField.getText());  //将账户作为参数传递dispose();}else{//增加提示窗口JFrame inform = new JFrame();inform.setTitle("提示");inform.setBounds(640, 305, 280,100);JLabel occ = new JLabel("账户或密码错误,请重新输入!");occ.setFont(new Font("华文行楷",Font.BOLD,18));inform.add(occ);setResizable(true);  //禁止最大化inform.setVisible(true);setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);}}}@Overridepublic void mouseClicked(MouseEvent e) {}@Overridepublic void mouseReleased(MouseEvent e) {}@Overridepublic void mouseExited(MouseEvent e) {}@Overridepublic void mouseEntered(MouseEvent e) {}});}@SuppressWarnings("deprecation")public boolean induage(){//连接数据库核实信息boolean duage = false ; Connection nect = null;ResultSet answar = null ;try {    //首先连接数据库String  a ="jdbc:mysql://localhost/CMession?"+"useSSL = true & serverTimezone = GMT &characterEncoding = utf-8 ";		       nect = DriverManager.getConnection(a,"root","l20011223");System.out.println("连接成功");} catch (SQLException e1) {e1.printStackTrace();}Statement sql = null;try {sql = nect.createStatement();   //声明数据库String query ="  select password  from passCard where acount=  '"+ANField.getText() +"';";//通过账号查找密码answar = sql.executeQuery(query);while(answar.next()){System.out.println(answar.getString(1)+"   "+PNField.getText());if(answar.getString(1).equals(PNField.getText())  ) //判断密码是否相等{duage = true ;}}} catch (SQLException e1) { e1.printStackTrace(); }try {nect.close();System.out.println("已关闭连接");} catch (SQLException e1){e1.printStackTrace();}//dispose();return duage;}
}

👨‍💻测试结果


当用户未注册账户或密码或者账号密码输入错误时则会弹出提示弹窗,效果图如下图所示。

在这里插入图片描述

若用户输入正确时则会成功进入主界面,进行相关功能操作,效果图如下图5.2所示。

在这里插入图片描述

当用户进入到注册界面时,需要填写注册信息,如果注册信息未填满或者密码长度不足六位数字则会弹出以下窗口提示,效果图如下图5.3所示。
在这里插入图片描述

若用户注册时,注册的账号是重复的,亦会有如下提示出现,提示重新注册,效果图如下图5.4所示。

在这里插入图片描述

你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!

相关内容

热门资讯

脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...