JAVA实现QQ登录、注册、修改密码等功能(美化版)

本文介绍了使用Java的GUI组件(awt、swing)、事件处理和JDBC技术,构建一个仿QQ登录、注册界面的实战项目。文章详细展示了MainFrame、RegisterUI和ForgetUI三个窗口的代码实现,并提供了项目结构和结果展示。虽然目前的登录验证仅限于空值检查,但提到了如何结合数据库进行查询。最后,文章提供了JDBC数据库操作的基础示例,但未深入讨论防止SQL注入、JDBC工具类和数据库连接池等内容。
摘要由CSDN通过智能技术生成

本专栏将从基础开始,循序渐进,由浅入深讲解Java的基本使用,希望大家都能够从中有所收获,也请大家多多支持。
专栏地址:26天高效学习Java编程
相关软件地址:软件地址
所有代码地址:代码地址
如果文章知识点有错误的地方,请指正!大家一起学习,一起进步。

文章目录

大家好,今天用Java的awt组件、swing组件以及数据库JDBC写了一个仿QQ登录的界面,具体演示如下图所示,包括三个页面,分别是登录窗口(MainFrame)注册窗口(RegisterUI)忘记密码窗口(ForgetUI)。本文主要应用的技术有:JAVA-GUI、JAVA的awt组件、swing组件、事件处理、JDBC等,是初学者学习和练手的好项目。准备好了吗,let’s get it!

项目结构及结果展示

该项目的结构如下图所示:

image-20220512090024192

主要有三个类:

  • MainFrame是登录窗口的GUI类,效果图如下:

image-20220512083835432

  • RegisterUI是注册窗口的GUI类,效果图如下:

image-20220512084322003

  • ForgetUI是忘记密码窗口的GUI类,效果图如下:

image-20220512084509083

代码展示

在进行代码展示前,先对Swing组件常见的控件类进行介绍,Swing组件常见的控件类有以下几种:

JLabel 标签主要用于展示 文本 或 图片,也可以 同时显示文本和图片
JButton 点击事件
JTextArea 编辑单行的文本框
JPasswordArea 一个只能输入数字的密码框 把输入的内容用其他字符回显
JTabledPlan 选项卡面板。它允许用户通过点击给定标题或图标的选项卡,在一组组件之间进行切换显示
JCheckBox 复选框,是否被选中
JPanel相当于将整个窗体划分成几个面板,然后在面板中使用布局管理器(管理按钮的布局)一个窗口只能有一个JFrame,能有多个JPlanel
Imagin.SCALE_DEFAULT 自适应JLabel的大小
getScaledInstance 创建此图像的缩放版本。返回一个新的 image 对象,默认情况下,该对象按指定的 width 和 height 呈现图像。即使已经完全加载了初始源图像,新的 image 对象也可以被异步加载
SetIcon图标将会被自动地放到按钮的上面,缺省时居中放置
setborderpainted 如果进度条应该绘制边框,则为 true;否则为 false

MainFrame模块

MainFrame的布局如下图所示:

image-20220512092119356

MainFrame的代码如下:

package Frame;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
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;



public class MainFrame extends JFrame implements ActionListener, FocusListener {
   private static final long serialVersionUID = 1L;
   private static final String _txt_account = "QQ密码/手机/邮箱";
   private static final String _txt_pwd = "密码";
   private static final String _txt_title = "QQ登录";
   private static final String _txt_registe = "注册";
   private static final String _txt_forget = "忘记密码";
   private static final String _txt_blank = "";
   
   private JTextField account;
   private JPasswordField pwd;

   private JLabel upper_frame;
   private JPanel lower_frame, center_frame;

   private JButton login, register, forget;

   MainFrame() {
      //控件的初始化
      init();

      add(upper_frame, BorderLayout.NORTH);
      add(center_frame, BorderLayout.CENTER);
      add(lower_frame, BorderLayout.SOUTH);
      ImageIcon logo = new ImageIcon("D:/image/logo.jpg"); //左上方小图标
      setIconImage(logo.getImage());
      setBounds(500, 230, 430, 360); //设定大小及位置
      setResizable(false); //登录框大小固定,不允许通过拖、拉改变大小
      setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); //设置窗口右上角的叉号,点击叉号窗口关闭 注意不能EXIT_ON_CLOSE做参数的,用它时候使用的是System.exit方法退出应用程序。故会关闭所有窗口。
      setTitle(_txt_title);
      setVisible(true); //说明数据模型已经构造好了,允许JVM可以根据数据模型执行paint方法开始画图并显示到屏幕上,一般放在最后一句
   }
    
   public void init() {
      //账号输入块
      account = new JTextField(_txt_account);
      account.setName("account");
      account.setForeground(Color.gray);
      account.addFocusListener(this); //产生事件响应用户行为

      //密码输入块
      pwd = new JPasswordField(_txt_pwd);
      pwd.setName("pwd");
      pwd.setForeground(Color.gray);
      pwd.setEchoChar('
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值