一个精美的登录界面原来是这样做的

news2024/12/23 23:08:51

在这里插入图片描述


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

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() {
		   @Override
			public 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();
       		}
       		}
       	}
       	    @Override
			public void mouseClicked(MouseEvent e) {}
			@Override
			public void mouseReleased(MouseEvent e) {}
			@Override
			public void mouseExited(MouseEvent e) {}
			@Override
			public 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() {
        	
        	@Override
			public void mousePressed(MouseEvent e) {
        		//单击注册按钮
        		if(e.getSource() == register && e.getButton() == MouseEvent.BUTTON1 )
        		{
        			SQL restore = new SQL();
        			restore.setVisible(true);
        		}
        	}
        	@Override
			public void mouseClicked(MouseEvent e) {}
			@Override
			public void mouseReleased(MouseEvent e) {}
			@Override
			public void mouseExited(MouseEvent e) {}
			@Override
			public void mouseEntered(MouseEvent e) {}
		});
        //设置登录信息跳转界面
        record.addMouseListener(new MouseListener() {
     
        	@Override
			public 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);
        			  }
        		}
        	}
        	@Override
			public void mouseClicked(MouseEvent e) {}
			@Override
			public void mouseReleased(MouseEvent e) {}
			@Override
			public void mouseExited(MouseEvent e) {}
			@Override
			public 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所示。

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/144575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

隐形纱窗行业市场经营管理及发展趋势研究分析

2023-2029年中国隐形纱窗行业市场经营管理及发展趋势研究报告报告编号&#xff1a;1690619本报告著作权归博研咨询所有&#xff0c;未经书面许可&#xff0c;任何组织和个人不得以任何形式复制、传播或输出中华人民共和国境外。任何未经授权使用本报告的相关商业行为都将违反《…

【操作系统】计算机内存管理

1.内存管理目标rom-ram &#xff08;1&#xff09;为啥要做内存管理 计算机不可能所以用户进程和系统所需要的全部程序和数据放入主存&#xff0c;所以操作系统必须对内存空间进行合理有效的分配内存管理功能 内存分配回收&#xff1a;主存储器&#xff08;物理内存&#xff…

UOS系统启动盘制作

UOS系统启动盘制作一、统信启动盘制作工具1、UOS系统1&#xff09;在启动器打开启动盘制作工具![在这里插入图片描述](https://img-blog.csdnimg.cn/d51bf22e25a846cdb99f7f6317e9447f.png)2&#xff09;选择镜像3&#xff09;选择优盘并格式化4&#xff09;开始制作5&#xff…

第06章 面向对象编程(基础部分oop)

1、单独用变量来解决&#xff1a;不利于数据的管理, 把猫的三个属性拆开了。 2、使用数组的方式解决&#xff1a; 数据类型体现不出来&#xff0c;由于数组中的类型是一致的&#xff0c;所有不能体现出不同的数据类型。 只能通过下标的方式获取信息&#xff0c;这样会造成变量…

sql练习题3

学生表练习 1、查询所有的课程的名称以及对应的任课老师姓名 select course.cname,teacher.tname from course inner join teacher on course.teacher_id teacher.tid;2、查询学生表中男女生各有多少人 select gender as 性别,count(gender) as 个数 from student group b…

Java面向对象:封装、JavaBean和综合案例

目录封装基本概念总结如何更好的封装总结JavaBean补充知识&#xff1a;成员变量&#xff0c;局部变量区别综合案例封装 面向对象的三大特征:封装&#xff0c;继承&#xff0c;多态。 封装:告诉我们&#xff0c;如何正确设计对象的属性和方法。 封装的原则:对象代表什么&#x…

Java学习笔记 --- JDBC(2)

一、事务 1、JDBC程序中当一个Connection对象创建时&#xff0c;默认情况下是自动提交事务&#xff1a;每次执行一个SQL语句时&#xff0c;如果执行成功&#xff0c;就会向数据库自动提交&#xff0c;而不能回滚。 2、JDBC程序中为了让多个SQL语句作为一个整体执行&#xff0…

人工智能算法--启发式搜索与估值函数

⬜⬜⬜ &#x1f430;&#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea; (*^▽^*)欢迎光临 &#x1f7e7;&#x1f7e8;&#x1f7e9;&#x1f7e6;&#x1f7ea;&#x1f430;⬜⬜⬜ ✏️write in front✏️ &#x1f4dd;个人主页&#xff1a;陈丹宇jmu &a…

Linux--阻塞信号--信号集--0104 05

1. 阻塞信号 1.1 信号其他相关常见概念 实际执行信号的处理过程称为信号递达。信号从产生到递达之间的状态称为信号未决。进程可以选择阻塞&#xff08;Block&#xff09;某个信号。被阻塞的信号保持在未决状态&#xff0c;直至进程解除对该信号的阻塞&#xff0c;才执行递达…

Qt—事件处理

Qt中&#xff0c;事件作为一个对象&#xff0c;继承自QEvent类&#xff0c;常见的有键盘事件QKeyEvent、鼠标事件QMouseEvent和定时器事件QTimerEvent等。Qt中&#xff0c;任何QObject子类示例都可以接收和处理事件。实际编程中通常实现部件的paintEvent&#xff08;&#xff0…

百度语音+自动驾驶感知+深度学习平台技术解析

HIEV快讯&#xff08;文/戒僧&#xff09;本文将解析三部分技术内容&#xff0c;出自百度2023 Create大会-技术开放日&#xff1a; •百度如何用“手机全双工语音交互”改善使用导航应用的体验 •如何用“上帝视角”BEV技术提升汽车的自动驾驶能力 •如何用百度自研的深度学习平…

k8s常见错误

master节点初始化失败 出现这个原因是因为&#xff0c;我们之前有执行过初始化的命令&#xff0c;然后初始化的时候就会产生一些文件&#xff0c;和占用端口&#xff0c;然后当你再次初始化的时候&#xff0c;就会提示你有些文件已经存在和端口正在被使用&#xff0c;所以我们…

年末高压叠加“阳”后虚弱,双重压力下的测试者们该何去何从

在2022年的最后一个月&#xff0c;国家放开管控&#xff0c;发布“新十条”&#xff0c;不查核酸&#xff0c;不看健康码&#xff0c;以前闻之色变的“小阳人”&#xff0c;十几天后&#xff0c;遍地皆是。 相信大家对这段时间的经历难以忘怀&#xff0c;在刚放开的时候&#x…

【论文阅读笔记】EndoL2H: Deep Super-Resolution for Capsule Endoscopy

论文地址&#xff1a;https://arxiv.org/abs/2002.05459 代码地址&#xff1a;https://github.com/CapsuleEndoscope/EndoL2H 论文小结 顾名思义&#xff0c;本文是胶囊内窥镜领域的超分算法。本文的网络结构是条件对抗网络 空间attention块的方式&#xff0c;实现8倍、10倍和…

不要再被骗了,解密短视频里追剧看电影都能赚钱的坑。

不要再被骗了,解密短视频里追剧看电影都能赚钱的坑。 最近刷短视频刷到了好多抖音追剧看电影每天收几百&#xff0c;还有截图&#xff0c;还有怎么实操的视频。 关键不是刷到一个两个&#xff0c;是几十个还有越来越多的趋势。 都说新入门实操&#xff0c;终于忍不住&#x…

LeetCode刷题Day05——链表(链表元素删除、相交、环形链表)

文章目录一、删除链表中的倒数第n个节点二、链表相交三、环形链表一、删除链表中的倒数第n个节点 题目链接&#xff1a;19.删除链表中的倒数第n个节点 /*** <pre>* 最简单的方法显然是先遍历一遍链表&#xff0c;知道长度后重新遍历一次就可以找到指定节点了&#xff0…

WebDAV之葫芦儿·派盘+DAVx⁵

DAVx⁵ 支持WebDAV方式连接葫芦儿派盘。 支持移动设备远程同步,是不是比NAS更便捷?并且这款软件最为关键的还是支持各种协议,让你能够在跨平台上面同步安卓和苹果上面的内容,你可以在服务器上面进行一些简单的内容管理,快来试试DAVx⁵与派盘的最佳组合吧。 DAVx⁵是一款…

LeetCode:18. 四数之和

18. 四数之和1&#xff09;题目2&#xff09;思路3&#xff09;代码4&#xff09;结果1&#xff09;题目 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &…

Codeforces Round #772 (Div. 2)

A. Min Or Sum 题目链接&#xff1a;Problem - A - Codeforces 样例输入&#xff1a; 4 3 1 3 2 5 1 2 4 8 16 2 6 6 3 3 5 6样例输出&#xff1a; 3 31 6 7题意&#xff1a;给你一个长度为n的数组&#xff0c;我们可以对这个数组进行操作&#xff0c;每次操作可以选择两个不…

ThinkPHP5之文件包含审计分析(五)

说明 该文章来源于同事lu2ker转载至此处&#xff0c;更多文章可参考&#xff1a;https://github.com/lu2ker/ 文章目录说明0x00 环境准备0x01 测试代码0x02 代码分析0x03 总结参考链接&#xff1a;Mochazz/ThinkPHP-Vuln/ 影响版本&#xff1a;5.0.0<ThinkPHP5<5.0.18 、…