1 效果展示
(1)登录界面
(2)注册界面 (3)动图显示
2 内容说明
(1)开发前需要引入连接Mysql 数据库驱动mysql-connector-java-5.1.30-bin.jar包 (2)路径建设 (3)需要下载xampp软件 xampp软件下载 xampp软件包含Apache Web服务器、Mysql Web服务器、Filezilla Web服务器、Mercury服务器以及Tomcat Web服务器。在这个项目中,我们只需要打开它服务器和服务器。
3 主要代码
(1)GUI登录界面设计代码如下:
package com.weh.User; import com.weh.ClientDemo.MousePressedSet; import com.weh.Mail.SendMail; import javax.swing.*; import javax.swing.plaf.basic.BasicButtonUI; import javax.swing.plaf.basic.BasicPanelUI; import java.awt.*; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.regex.Matcher; import java.util.regex.Pattern; /* * 登录窗口 */ public class LoginDemo extends JFrame{ JTextField uField; JPasswordField pFd; JTextField QQField ; JTextField tField; static int random; static boolean flag=false; Login login=new Login ( ) ; public LoginDemo ( ) { super ( "HI登录界面" ) ; //获取显示屏的大小 Dimension screenSize = Toolkit . getDefaultToolkit ( ) . getScreenSize ( ) ; int sw = screenSize .width ; int sh = screenSize .height ; //窗口宽高大小 int width = 500 ; int height = 340 ; this . setBounds ( (sw - width ) / 2 , (sh - height ) / 2 , width , height ) ; //设置窗口的位置 this . setIconImage (Toolkit . getDefaultToolkit ( ) . getImage (LoginDemo . class . getResource ( "/com/weh/img/chatping.jpg" ) ) ) ; //窗口图标 Image image = Toolkit . getDefaultToolkit ( ) . getImage (LoginDemo . class . getResource ( "/com/weh/img/chat.jpg" ) ) ; //背景图 ImageIcon background = new ImageIcon (image ) ; background . setImage (image . getScaledInstance (width , height , Image .SCALE_AREA_AVERAGING ) ) ; JLabel label = new JLabel (background ) ; // 把背景图片显示在一个 标签里面 label . setBounds ( 0 , 0 , this . getWidth ( ) , this . getHeight ( ) ) ; // 把标签的大小位置设置为图片刚好填充整个面板 JPanel imagePanel = (JPanel ) this . getContentPane ( ) ; // 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明 imagePanel . setOpaque ( false ) ; // 窗口透明 this . getLayeredPane ( ) . add (label , Integer . valueOf (Integer .MIN_VALUE ) ) ; // 把背景图片添加到分层窗格的最底层作为背景 JPanel panel = new JPanel ( ) ; //盒子模块 Box ubox = Box . createHorizontalBox ( ) ; Box pbox = Box . createHorizontalBox ( ) ; Box vbox = Box . createVerticalBox ( ) ; //创建界面工具类 JLabel uLabel = new JLabel ( "用户名:" ) ; //文本设计 uLabel . setFont ( new Font ( "微软雅黑" , Font .BOLD , 15 ) ) ; uLabel . setForeground ( new Color ( 0xFBFCFD ) ) ; // 设置前景色 uField = new JTextField ( ) ; //输入框 uField . setToolTipText ( "HI" ) ; // 悬停显示 uField . setFont ( new Font ( "微软雅黑" , Font .BOLD , 15 ) ) ; uField . setColumns ( 12 ) ; JLabel pLabel = new JLabel ( "密 码:" ) ; //文本设计 pLabel . setFont ( new Font ( "微软雅黑" , Font .BOLD , 15 ) ) ; pLabel . setForeground ( new Color ( 0xFBFCFD ) ) ; // 设置前景色 pFd = new JPasswordField ( ) ; pFd . setToolTipText ( "密码" ) ; // 悬停显示 pFd . setFont ( new Font ( "微软雅黑" , Font .BOLD , 15 ) ) ; pFd . setColumns ( 12 ) ; // 如果使用其他回显字符,可以设置大小,但是星星不可以。。。 pFd . setEchoChar ( '●' ) ; // 星星符号 JButton button1 = new JButton ( "登录" ) ; //登录按钮 button1 . setToolTipText ( "登录" ) ; // 悬停显示 JButton button2 = new JButton ( "重置" ) ; //重置按钮 button2 . setToolTipText ( "重置" ) ; // 悬停显示 JButton button3 = new JButton ( "发送验证码" ) ; //发送验证码按钮 button3 . setToolTipText ( "发送验证码" ) ; // 悬停显示 JMenu Menubutton3 = new JMenu ( "注册账号" ) ; //注册账号按钮 Menubutton3 . setToolTipText ( "注册账号" ) ; // 悬停显示 JMenu Menubutton4 = new JMenu ( "已有账号,忘记密码?" ) ; //已有账号,忘记密码?按钮 Menubutton4 . setToolTipText ( "已有账号,忘记密码?" ) ; // 悬停显示 JMenu Menubutton5 = new JMenu ( "邮箱验证登录" ) ; //邮箱验证登录按钮 Menubutton5 . setToolTipText ( "邮箱验证登录" ) ; // 悬停显示 JMenu Menubutton6 = new JMenu ( "密码登录" ) ; //密码登录按钮 Menubutton6 . setToolTipText ( "密码登录" ) ; // 悬停显示 // 字体设置 button1 . setFont ( new Font ( "微软雅黑" , Font .BOLD , 18 ) ) ; button1 . setForeground (Color .white ) ; // 设置前景色 button1 . setBackground ( new Color ( 0x08BDFD ) ) ; button1 . setDefaultCapable ( true ) ; button1 . setBounds ( ( this . getWidth ( ) - 120 - 180 ) / 2 , 250 , 120 , 30 ) ; // 设置按钮位置,及按钮大小 button1 . setCursor ( new Cursor (Cursor .HAND_CURSOR ) ) ; //鼠标手势的设置 button2 . setFont ( new Font ( "微软雅黑" , Font .BOLD , 18 ) ) ; button2 . setForeground (Color .white ) ; // 设置前景色 button2 . setBackground ( new Color ( 0x08BDFD ) ) ; button2 . setDefaultCapable ( true ) ; button2 . setCursor ( new Cursor (Cursor .HAND_CURSOR ) ) ; //鼠标手势的设置 button2 . setBounds ( ( this . getWidth ( ) - 120 + 180 ) / 2 , 250 , 120 , 30 ) ; // 设置按钮位置,及按钮大小 button3 . setFont ( new Font ( "微软雅黑" , Font .BOLD , 18 ) ) ; button3 . setForeground ( new Color ( 1 ) ) ; // 设置前景色 button3 . setBackground ( new Color ( 0x08BDFD ) ) ; button3 . setDefaultCapable ( true ) ; button3 . setCursor ( new Cursor (Cursor .HAND_CURSOR ) ) ; //鼠标手势的设置 Menubutton3 . setFont ( new Font ( "微软雅黑" , Font .BOLD , 12 ) ) ; Menubutton3 . setForeground ( new Color ( 0x02FCFC ) ) ; // 设置前景色 Menubutton3 . setUI ( new BasicButtonUI ( ) ) ; //恢复基本视觉效果 Menubutton3 . setBounds ( 5 , 280 , 85 , 20 ) ; // 设置按钮位置,及按钮大小 Menubutton3 . setContentAreaFilled ( false ) ; // 设置按钮透明 Menubutton3 . setCursor ( new Cursor (Cursor .HAND_CURSOR ) ) ; Menubutton4 . setFont ( new Font ( "微软雅黑" , Font .BOLD , 12 ) ) ; Menubutton4 . setForeground ( new Color ( 0xC3FFFF ) ) ; // 设置前景色 Menubutton4 . setUI ( new BasicButtonUI ( ) ) ; //恢复基本视觉效果 Menubutton4 . setBounds (width - 150 , 280 , 150 , 20 ) ; // 设置按钮位置,及按钮大小 Menubutton4 . setContentAreaFilled ( false ) ; // 设置按钮透明 Menubutton4 . setCursor ( new Cursor (Cursor .HAND_CURSOR ) ) ; Menubutton5 . setFont ( new Font ( "微软雅黑" , Font .BOLD , 15 ) ) ; Menubutton5 . setForeground ( new Color ( 0x383939 ) ) ; // 设置前景色 Menubutton5 . setUI ( new BasicButtonUI ( ) ) ; //恢复基本视觉效果 Menubutton5 . setBounds (width - 190 , 225 , 100 , 20 ) ; // 设置按钮位置,及按钮大小 Menubutton5 . setContentAreaFilled ( false ) ; // 设置按钮透明 Menubutton5 . setCursor ( new Cursor (Cursor .HAND_CURSOR ) ) ; Menubutton6 . setFont ( new Font ( "微软雅黑" , Font .BOLD , 15 ) ) ; Menubutton6 . setForeground ( new Color ( 0x383939 ) ) ; // 设置前景色 Menubutton6 . setUI ( new BasicButtonUI ( ) ) ; //恢复基本视觉效果 Menubutton6 . setBounds (width - 190 , 225 , 100 , 20 ) ; // 设置按钮位置,及按钮大小 Menubutton6 . setContentAreaFilled ( false ) ; // 设置按钮透明 Menubutton6 . setCursor ( new Cursor (Cursor .HAND_CURSOR ) ) ; /* 分区模块布局 */ //小盒子,设计用户名布局模块 ubox . add (uLabel ) ; ubox . add (Box . createHorizontalStrut ( 5 ) ) ; //插入中间盒子宽度为5,作为相邻文本的空隙 ubox . add (uField ) ; //小盒子,设计密码框布局模块 pbox . add (pLabel ) ; pbox . add (Box . createHorizontalStrut ( 5 ) ) ; //插入中间盒子宽度为5,作为相邻文本的空隙 pbox . add (pFd ) ; //大盒子 vbox . add (Box . createVerticalStrut ( 80 ) ) ; //插入中间盒子高度为80,作为上下文本的空隙 vbox . add (ubox ) ; vbox . add (Box . createVerticalStrut ( 60 ) ) ; //插入中间盒子高度为60,作为上下文本的空隙 vbox . add (pbox ) ; uField . setText ( "weh" ) ; //设置默认账号 pFd . setText ( "123456" ) ; //设置默认密码 panel . setUI ( new BasicPanelUI ( ) ) ; //恢复基本视觉效果 panel . setOpaque ( false ) ; // 面板透明 panel . add (vbox , BorderLayout .CENTER ) ; //vbox盒子居中 this . setDefaultCloseOperation (EXIT_ON_CLOSE ) ; this . add (button1 ) ; this . add (button2 ) ; this . add (Menubutton3 ) ; this . add (Menubutton4 ) ; this . add (Menubutton5 ) ; this . add (Menubutton6 ) ; this . add (panel ) ; Menubutton6 . setVisible ( false ) ; this . setVisible ( true ) ; this . setResizable ( false ) ; this . setAlwaysOnTop ( true ) ; //设置窗口最上层 QQField = new JTextField ( ) ; //输入框 tField = new JTextField ( ) ; //输入框 QQField . setVisible ( false ) ; tField . setVisible ( false ) ; button3 .