qq模拟登入界面

一.设计概述
1.使用java所学知识,做一个qq登入模拟界面,如图所示。

QQ登录界面整体可以看做一个容器窗口,使用JFrame容器来实现,从登录界面的布局效果和显示内容可以看出,该布局分为五个区域,顶部区域、左侧区域、中间区域、右侧区域、和底部区域,因此使用BorderLayout来管理页面布局,每个区域使用Jpanel面板组件进行填充

二.代码实现
1.第一个类为QQ主要实现一个大的组件和调用其他5个Jpanel.代码如下:

package qqlogin;import java.awt.BorderLayout;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;public class QQ {public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable(){@Overridepublic void run() {// TODO Auto-generated method stubmethod1();}}
);}public static void method1(){//顶级容器JFrameJFrame jf =new JFrame();jf.setBounds(497, 242, 426, 300);//禁止修改窗口大小jf.setResizable(false);//设置窗口边框不显示jf.setUndecorated(true);jf.setLayout(new BorderLayout());jf.setVisible(true);JPanel topPanel=Createpanel.createTopPanel();jf.add(topPanel,BorderLayout.PAGE_START);JPanel leftPanel=Createpanel.createLeftPanel();jf.add(leftPanel,BorderLayout.LINE_START);JPanel centerpanel=Createpanel.createCentPanel(jf);jf.add(centerpanel,BorderLayout.CENTER);JPanel rightpanel=Createpanel.createRightPanel();jf.add(rightpanel,BorderLayout.LINE_END);JPanel endpanel=Createpanel.createEndPanel();jf.add(endpanel,BorderLayout.PAGE_END);}}
  1. 第二个类为Createpanel主要用于创建5个JPanel实现。代码如下:
package qqlogin;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.SwingConstants;public class Createpanel {private static LoginListener listener;//顶部panelpublic static JPanel createTopPanel(){JPanel panel =new JPanel();panel.setLayout(null);//1.创建标签组件,并且设置背景图ImageIcon icon = new ImageIcon("src/photo/background.png");JLabel backGround = new JLabel(icon);//2.设置面板尺寸panel.setPreferredSize(new Dimension(0,140));//3.设置背景图的位置以及尺寸backGround.setBounds(0,0,426,icon.getIconHeight());//4.右上角添加按钮  ->退出的按钮JButton out = new JButton(new ImageIcon("src/photo/close_normal.png"));out.setBounds(395,0,26,26);//5.设置鼠标移到退出按钮时,更改图片out.setRolloverIcon(new ImageIcon("src/photo/close_hover.png"));//6.为退出按钮注册监听,关闭窗口out.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});panel.add(backGround);panel.add(out);return panel;}//左侧的panelpublic static JPanel createLeftPanel(){JPanel panel =new JPanel();panel.setLayout(null);//2.设置面板尺寸panel.setPreferredSize(new Dimension(130,0));ImageIcon icon = new ImageIcon("src/photo/qq.png");JLabel label =new JLabel(icon);label.setBounds(0, 0,120,110);panel.add(label);return panel;}//右侧的panelpublic static JPanel createRightPanel(){JPanel panel =new JPanel();panel.setLayout(null);//2.设置面板尺寸panel.setPreferredSize(new Dimension(100,0));//创建注册账号的JLabelJLabel regesit = new JLabel("注册");regesit.setForeground(new Color(100,149,238));regesit.setBounds(0, 13, 60, 30);regesit.setFont(new Font("宋体",Font.PLAIN,12));//创建找回密码的JLabelJLabel regetpwd = new JLabel("找回密码");regetpwd.setForeground(new Color(100,149,238));regetpwd.setBounds(0, 43, 60, 30);regetpwd.setFont(new Font("宋体",Font.PLAIN,12));panel.add(regesit);panel.add(regetpwd);return panel;}//中间的区域public static JPanel createCentPanel(JFrame jf){JPanel panel =new JPanel();panel.setLayout(null);//创建下拉列表String[] Arr = {"123456","234576"};JComboBox<Object> box = new JComboBox<Object>(Arr);//设置可编辑box.setEditable(true);box.setBounds(0,15,175,30);box.setFont(new Font("Calibri",Font.PLAIN,13));JPasswordField pwdbox = new JPasswordField();pwdbox.setLayout(new FlowLayout(FlowLayout.RIGHT,0,0));pwdbox.setBounds(0, 44, 175, 30);pwdbox.setPreferredSize(new Dimension(185,25));//创建小键盘图标JButton btn = new JButton(new ImageIcon("src/photo/keyboard.png"));btn.setPreferredSize(new Dimension(22,20));btn.setBorderPainted(false);//创建两个勾选按钮JCheckBox box1 = new JCheckBox("记住密码");box1.setFocusPainted(false);box1.setFont(new Font("宋体",Font.PLAIN,13));box1.setBounds(0,85, 80, 20);JCheckBox box2 = new JCheckBox("记住密码");box2.setFocusPainted(false);box2.setFont(new Font("宋体",Font.PLAIN,13));box2.setBounds(100,85, 80, 20);panel.add(box1);panel.add(box2);pwdbox.add(btn);panel.add(pwdbox);panel.add(box);//创建监听对象listener =new LoginListener(box,pwdbox,jf);return panel;}//底部区域public static JPanel createEndPanel(){JPanel panel =new JPanel();panel.setLayout(null);//设置面板尺寸panel.setPreferredSize(new Dimension(0,51));//创建多人登入按钮组件JButton btn1 = new JButton(new ImageIcon("src/photo/singel_normal.png"));//设置按钮不要边框btn1.setFocusPainted(false);btn1.setBorderPainted(false);btn1.setRolloverIcon(new ImageIcon("src/photo/singel_down.png"));btn1.setPreferredSize(new Dimension(40,40));//设置不显示按钮区域btn1.setContentAreaFilled(false);btn1.setBounds(0,10,40,40);btn1.setToolTipText("多账号登入");//创建底部中间登入团标按钮ImageIcon loginIcon = new ImageIcon("src/photo/login_normal.png");JButton btn2 = new JButton("登  录",loginIcon);btn2.setFont(new Font("宋体",Font.PLAIN,13));btn2.setBounds(130, 0, 175,40); btn2.setHorizontalTextPosition(SwingConstants.CENTER);btn2.setFocusPainted(false);btn2.setBorderPainted(false);btn2.setContentAreaFilled(false);btn2.setRolloverIcon(new ImageIcon("src/photo/login_hover.png"));//创建右下角二维码登录图标JButton btn3 = new JButton(new ImageIcon("src/photo/right_normal.png"));btn3.setFocusPainted(false);btn3.setBorderPainted(false);btn3.setContentAreaFilled(false);btn3.setBounds(380, 10, 40, 40);btn3.setRolloverIcon(new ImageIcon("src/photo/right_hover.png"));btn3.setToolTipText("二维码登录");panel.add(btn3);panel.add(btn2);panel.add(btn1);//为登录按钮注册监听btn2.addActionListener(listener);return panel;}}

3.第3个类为LoginListener,主要实现登入成功后的静态窗口,并且在此类中与数据库连接。代码如下:

package qqlogin;import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;public class LoginListener implements ActionListener {private JComboBox<Object> box;private JPasswordField pwdbox;private JFrame jf;public LoginListener(JComboBox<Object> box, JPasswordField pwdbox,JFrame jf) {this.box = box;this.pwdbox = pwdbox;this.jf=jf;}@Overridepublic void actionPerformed(ActionEvent arg0) {String userName = (String) box.getSelectedItem();String userpassword = new String(pwdbox.getPassword());boolean flag =false;Connection conn= null;PreparedStatement pstmt=null;ResultSet rs =null;try {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//2.获取连接对象conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc","root","oracle");//3.获取SQL语句执行者pstmt = conn.prepareStatement("SELECT * from qqlogin WHERE qqnumber= ? AND passwd=?");pstmt.setObject(1, userName);pstmt.setObject(2, userpassword);//4.执行SQL语句rs = pstmt.executeQuery();//5.处理结果集flag = rs.next();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{//6.释放资源try {conn.close();} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}try {pstmt.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {rs.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if(flag){jf.dispose();//绘制一个新的窗体,表示成功JFrame newjf = new JFrame();newjf.setBounds(800, 100, 298, 687);newjf.setUndecorated(true);newjf.setVisible(true);//创建背景图片和退出按钮JPanel panel =new JPanel();panel.setLayout(null);panel.setPreferredSize(new Dimension(0,140));JLabel label = new JLabel(new ImageIcon("src/photo/loginSuccess.png"));label.setBounds(0, 0, 289, 687);//创建退出按钮对象JButton btn = new JButton(new ImageIcon("src/photo/close2_normal.png"));btn.setBounds(259, 0, 26, 26);btn.setBorderPainted(false);btn.setRolloverIcon(new ImageIcon("src/photo/close2_hover.png"));panel.add(btn);panel.add(label);newjf.add(panel);btn.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent arg0) {newjf.dispose();}});}else{JOptionPane.showMessageDialog(null,"您的数据有误,请检查用户密码是否正确");}}}

利用java知识做一个模拟qq登入模拟界面相关推荐

  1. 案例:使用selenium模拟qq登入

    示例代码 from selenium import webdriver from time import sleep #实例化浏览器对象 bro = webdriver.Chrome(executab ...

  2. 仿QQ登入界面增加反应

    上次,咋们做了一个仿QQ登入界面,现在咋们的目标就是让这个界面上的组件有所反应. 这个交互功能需要监听器这个方法来实现. 监听器的实现三步骤 1.事件源:当前动作所发生的组件. 2.监听器:动作方法监 ...

  3. 在java里四舍五入怎么做_利用java怎么实现一个四舍五入功能

    利用java怎么实现一个四舍五入功能 发布时间:2020-12-02 16:46:08 来源:亿速云 阅读:68 作者:Leah 这期内容当中小编将会给大家带来有关利用java怎么实现一个四舍五入功能 ...

  4. 43.【Java 实现验证码获取 C++实现密码加密和删除和QQ登入系统】

    Java实现验证码信息 (一).简要概述: 1.思路分析 2.代码展示: 3.效果展示: (二).密码加密C++操作 1.基本思路和解析: 2.代码展示: (三).QQ登入系统: 1.建设QQ登入系统 ...

  5. 天天酷跑java_利用Java怎么实现一个天天酷跑游戏

    利用Java怎么实现一个天天酷跑游戏 发布时间:2020-12-15 17:25:03 来源:亿速云 阅读:102 作者:Leah 利用Java怎么实现一个天天酷跑游戏?很多新手对此不是很清楚,为了帮 ...

  6. java qq聊天界面_【附源码】用Java写了一个类QQ界面聊天小项目,可在线聊天!...

    原标题:[附源码]用Java写了一个类QQ界面聊天小项目,可在线聊天! 目录: 1.功能实现 2.模块划分 3.使用到知识 4.部分代码实现 5.运行例图 1.功能实现 1.修改功能(密码.昵称.个性 ...

  7. 利用Java语言编写一个猜数字游戏(有次数限制)

    猜数字小游戏. 利用Java语言编写. 题目: 用代码模拟猜数字的小游戏. 思路: 1.首先需要产生一个随机数字,并且一旦产生不再变化.用Random的nextInt方法 2.需要键盘输入,所以用到了 ...

  8. java运用到的单词_利用Java怎么实现一个单词提取功能

    利用Java怎么实现一个单词提取功能 发布时间:2020-12-08 17:07:00 来源:亿速云 阅读:65 作者:Leah 这篇文章给大家介绍利用Java怎么实现一个单词提取功能,内容非常详细, ...

  9. java 方法数统计_利用Java简单实现一个代码行数统计器方法实例

    前言 哈喽,我是小黑, 最近学了java的输入输出流后一直心痒痒,总想找一点事情来做,所以用java代码来实现了一下统计代码的所有行数,看一下我上大学以来到底打了多少行. 先附上实现代码吧! pack ...

最新文章

  1. mysql 修改上传文件大小限制吗_修改PHP上传文件大小限制的方法(转)
  2. OpenGL交互——菜单控制(基础教程)
  3. 首次提出“智能经济形态”,与实体经济深度融合
  4. getheaderfields java_java – HttpsURLConnection getHeaderFields没有返回set-cookie
  5. java8的新特性_Java8的
  6. Vue+Element!一千字带你编写合理的编辑,查看,新建!
  7. WCF配置报错 在 ServiceModel 客户端配置部分中,找不到名称 和协定
  8. s5pv210——中断实战
  9. 写代码质量改善java计划151建议——导航开始
  10. c8网络语言意思,求一些比较经典的网络用语
  11. HR 必知的 360 评估
  12. 华为模拟器配置S5700交换机OSPF案例
  13. python-二维嵌套列表的元素删除、更改大小写
  14. Excel自学笔记 第五节 怎么在列后加统一固定字符?
  15. 操作系统C语言模拟内存分配算法的模拟实现
  16. HDU6656 2019 Multi-University Training Contest 7
  17. python之开三次方根的计算
  18. C++数组去重与排序
  19. 2008年研究生入学考试西医综合真题及其答案
  20. 计算机应用2010综合测试五,计算机应用基础Word2010综合测试操作步骤参考自测题步骤...

热门文章

  1. 全封闭主动侧倾「智能」电动车「坐骑科技」完成数千万元天使投资
  2. python 分类变量转为哑变量_超级详细的特征哑变量处理
  3. Day13——T9回文数、T35搜索插入位置
  4. nuxt2,服务端渲染应用框架, 从创建开发到部署上线
  5. Jsp页面中双引号问题
  6. iCheck如何获得id与value
  7. 复杂布局之光——Grid布局
  8. 由{% if %} 导致的jinja2.exceptions.TemplateSyntaxError: Encountered unknown tag
  9. Rapidjson的简单使用
  10. LVDS转LVDS,转VGA,TTL,HDMI