Java模拟QQ登录界面(GUI)

这篇具有很好参考价值的文章主要介绍了Java模拟QQ登录界面(GUI)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

运行的结果:

模拟qq登录java,Java上机作业,java,GUI

源码以及图片:

链接: https://pan.baidu.com/s/13JJFyg14CbShs_HzLAoW6w?pwd=pwu3 提取码: pwu3 

功能的实现:

 实现1:

对每个文本框进行监控,鼠标定在哪的时候,下边框变为蓝色

模拟qq登录java,Java上机作业,java,GUI

模拟qq登录java,Java上机作业,java,GUI

实现2:

用户光标定到文本框的时候,要是没有输入信息,就把里面的提示文字给清除掉,给用户一个好的体验

实现3:

登录的时候对账号和密码检验,要是账号和密码都是admin是登录成功,否则登录失败并提醒用户

模拟qq登录java,Java上机作业,java,GUI

没输入密码和账号的时候也进行提示

模拟qq登录java,Java上机作业,java,GUI

模拟qq登录java,Java上机作业,java,GUI

 模拟qq登录java,Java上机作业,java,GUI

分析:

这个的页面分为是三个部分,分别是上 中 下.其中上是一个背景,中是登录需要输入和选择的,下是注册账号和二维码

布局:

模拟qq登录java,Java上机作业,java,GUI

知识点:

定位:

定位用的大部分都是绝对定位的,在学web时候,感觉绝对定位是真的好用,在这里面也是. 怎么去设置为绝对定位呢?

绝对定位的相关知识点:

绝对定位是一种在 GUI 编程中使用的布局方式,它允许你直接指定组件在容器中的精确位置和尺寸。与其他布局管理器相比,绝对定位提供了更大的灵活性,可以精确控制组件的位置和大小。

使用绝对定位时,你需要将容器的布局管理器设置为 null,这样容器就不会自动调整组件的位置和大小。然后,你可以使用 setBounds() 方法来设置组件的位置和大小。setBounds() 方法接受四个参数:x、y、width 和 height,分别表示组件的左上角在容器中的 x 和 y 坐标,以及组件的宽度和高度。

 panel.setLayout(null); // 使用绝对定位
 panel2.setBounds(0, 0, 591, 216); // 使用setBounds方法设置组件的位置和大小

代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class MyQQLogin {
    public static void main(String[] args) {
        JFrame f = new JFrame("模拟QQ登录");
        f.setSize(600, 500);
        f.setLocation(300, 300);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        panel.setLayout(null); // 使用绝对定位
        panel.setBackground(Color.WHITE); // 设置背景颜色为白色
        f.add(panel);

        JPanel panel2 = new JPanel();
        JLabel label = new JLabel(new ImageIcon("D:\\杂论\\background.png"));
        panel2.add(label);
        panel2.setBounds(0, 0, 591, 216); // 使用setBounds方法设置组件的位置和大小
        panel2.setBackground(Color.WHITE); // 设置背景颜色为白色
        panel.add(panel2);

        JPanel panelCenter = new JPanel();
        panelCenter.setLayout(null);//绝对定位
        panelCenter.setBackground(Color.WHITE); // 设置背景颜色为白色
        /*----------------qq号码start--------------------*/
        JPanel QQNumber = new JPanel();
        JLabel labelQQ = new JLabel(new ImageIcon("D:\\杂论\\qq.png"));
        JTextField Number = new JTextField("QQ号码/手机/邮箱", 20);
        Number.setPreferredSize(new Dimension(400, 35));
        Number.setBorder(null);
        Number.setFont(new Font("宋体", Font.PLAIN, 16));
        QQNumber.add(labelQQ);
        QQNumber.add(Number);
        QQNumber.setBounds(-100, 0, 400, 40);
        QQNumber.setBackground(Color.WHITE); // 设置背景颜色为白色
        panelCenter.add(QQNumber);
        //对Number输入框进行监控
        // 添加焦点监听器
        Number.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(192, 192, 192)));
        Number.addFocusListener(new FocusListener() {
            @Override
            public void focusGained(FocusEvent e) {
                if (Number.getText().equals("QQ号码/手机/邮箱")) {
                    Number.setText("");
                    Number.setForeground(Color.BLACK);
                }
                QQNumber.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLUE));
                Number.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLUE));
            }

            @Override
            public void focusLost(FocusEvent e) {
                if (Number.getText().isEmpty()) {
                    Number.setForeground(Color.GRAY);
                    Number.setText("QQ号码/手机/邮箱");
                }
                QQNumber.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(192, 192, 192)));
                Number.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(192, 192, 192)));
            }
        });
        /*---------------qq号码end--------------------*/
        /*---------------qq密码start------------------*/
        JPanel passWord = new JPanel();
        JLabel labelPassWord = new JLabel(new ImageIcon("D:\\杂论\\password.png"));
        JTextField pass = new JTextField("密码", 20);
        pass.setPreferredSize(new Dimension(400, 35));
        pass.setBorder(null);
        pass.setFont(new Font("宋体", Font.PLAIN, 16));
        pass.setForeground(Color.GRAY);
        passWord.add(labelPassWord);
        passWord.add(pass);
        passWord.setBounds(-100, 40, 400, 40);
        passWord.setBackground(Color.WHITE); // 设置背景颜色为白色
        panelCenter.add(passWord);
        passWord.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(192, 192, 192)));
        pass.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(192, 192, 192)));
        pass.addFocusListener(new FocusListener() {
            @Override
            public void focusGained(FocusEvent e) {
                String password = new String(pass.getText());
                if (password.equals("密码")) {
                    pass.setText("");
                    pass.setForeground(Color.BLACK);
                }
                passWord.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLUE));
                pass.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, Color.BLUE));
            }

            @Override
            public void focusLost(FocusEvent e) {
                String password = new String(pass.getText());
                if (password.isEmpty()) {
                    pass.setForeground(Color.GRAY);
                    pass.setText("密码");
                }
                passWord.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(192, 192, 192)));
                pass.setBorder(BorderFactory.createMatteBorder(0, 0, 1, 0, new Color(192, 192, 192)));
            }
        });
        /*---------------qq密码end------------------*/


        /*---------------多选按钮start--------------*/
        JPanel choice = new JPanel();
        choice.setLayout(null);
        JCheckBox automaticLogin = new JCheckBox("自动登录");
        automaticLogin.setBackground(Color.WHITE);
        automaticLogin.setBounds(0, 0, 100, 40);

        JCheckBox rememberPass = new JCheckBox("记住密码");
        rememberPass.setBounds(125, 0, 100, 40);

        JLabel findPass = new JLabel("找回密码");
        findPass.setBounds(250, 0, 100, 40);

        automaticLogin.setOpaque(false); // 设置为不透明
        rememberPass.setOpaque(false); // 设置为不透明
        findPass.setForeground(Color.black); // 设置字体颜色为蓝色
        choice.add(automaticLogin);
        choice.add(rememberPass);
        choice.add(findPass);
        choice.setBounds(0, 80, 400, 40);
        choice.setBackground(Color.WHITE); // 设置背景颜色为白色
        panelCenter.add(choice);

        /*------------多选按钮end------------*/

        /*-------------登录界面start-------------*/
        JPanel login = new JPanel();
        JButton secureLogin = new JButton("secureLogin", new ImageIcon("D:\\杂论\\安全登录.png"));
        secureLogin.setPreferredSize(new Dimension(320, 40));
        secureLogin.setBackground(new Color(8, 186, 253));
        secureLogin.setFont(new Font("Arial", Font.BOLD, 16)); // 设置字体为Arial,加粗,大小为16
        secureLogin.setForeground(Color.WHITE); // 设置字体颜色为白色
        secureLogin.setBorderPainted(false); // 去除按钮的边框绘制
        login.add(secureLogin);
        login.setBounds(0, 120, 320, 50);
        login.setBackground(new Color(8, 186,253));
        panelCenter.add(login);
        secureLogin.addActionListener(new ActionListener() {//事件的监控
            @Override
            public void actionPerformed(ActionEvent e) {
                String account = Number.getText();
                String password = pass.getText();
                if (account.equals("admin") && password.equals("admin")) {
                    JOptionPane.showMessageDialog(f, "登录成功");
                } else if(account.equals("QQ号码/手机/邮箱")) {
                    JOptionPane.showMessageDialog(f, "请输入账号");
                } else if(password.equals("密码")) {
                    JOptionPane.showMessageDialog(f, "请输入密码");
                }
                else {
                    JOptionPane.showMessageDialog(f, "账号或密码错误");
                }
            }
        });
        /*------------登录界面end----------------------*/

        JPanel last = new JPanel();
        last.setBounds(20, 420, 60, 30);
        last.setBackground(Color.WHITE); // 设置背景颜色为白色
        JPanel register = new JPanel();//注册账号
        register.setBackground(Color.WHITE);
        JLabel signIn = new JLabel("注册账号");
        signIn.setFont(new Font("宋体", Font.PLAIN, 14));// 设置字体
        signIn.setForeground(Color.GRAY);// 设置字体颜色
        register.add(signIn);
        last.add(register);


        JPanel QRCode = new JPanel();
        QRCode.setBackground(Color.WHITE);
        QRCode.setBounds(500, 400, 45, 46);
        JLabel QR = new JLabel(new ImageIcon("D:\\杂论\\QRCode.png"));
        QRCode.add(QR);

        panelCenter.setBounds(130, 240, 340, 180);//居中显示
        panel.add(panelCenter); // 将panelCenter添加到panel中
        panel.add(last);
        panel.add(QRCode);

        f.setVisible(true);
        f.addWindowListener(new WindowAdapter() {
            public void windowOpened(WindowEvent e){
                f.requestFocus(); // 将焦点设置到窗体上
            }
        });

    }
}

代码各个部分的分析:

创建JFrame对象

JFrame frame = new JFrame("QQ登录");
frame.setSize(400, 300);
frame.setLocationRelativeTo(null);
frame.setResizable(false);

通过new JFrame("QQ登录")创建一个JFrame对象,并设置标题为"QQ登录"。使用setSize()方法设置窗口的大小为400x300像素。使用setLocationRelativeTo(null)方法将窗口居中显示。使用setResizable(false)方法禁止调整窗口大小

创建主面板JPanel对象

JPanel panel = new JPanel();
panel.setBackground(Color.WHITE);

添加JLabel组件

JPanel panel2 = new JPanel();
ImageIcon imageIcon = new ImageIcon("logo.png");
JLabel label = new JLabel(imageIcon);
panel2.add(label);
panel.add(panel2);

使用new JPanel()创建一个JPanel对象,并将其赋给panel2变量。使用new ImageIcon("logo.png")创建一个带有指定图像的ImageIcon对象,其中"logo.png"是图片文件的路径。使用new JLabel(imageIcon)创建一个带有图像的JLabel对象,并将其赋给label变量。将label添加到panel2中,然后将panel2添加到主面板panel中。

创建输入框组件和多选按钮组件

JPanel panelCenter = new JPanel();
panelCenter.setLayout(null);
panelCenter.setBackground(Color.WHITE);

JTextField accountField = new JTextField("QQ号码/手机/邮箱");
accountField.setBounds(50, 50, 300, 30);
// 添加焦点监听器,以清除和恢复默认文本

JPasswordField passwordField = new JPasswordField("密码");
passwordField.setBounds(50, 100, 300, 30);
// 添加焦点监听器,以清除和恢复默认文本

JCheckBox autoLoginCheckbox = new JCheckBox("自动登录");
autoLoginCheckbox.setBounds(50, 150, 100, 30);

JCheckBox rememberPwdCheckbox = new JCheckBox("记住密码");
rememberPwdCheckbox.setBounds(150, 150, 100, 30);

JLabel forgetPwdLabel = new JLabel("找回密码");
forgetPwdLabel.setBounds(250, 150, 100, 30);
// 添加鼠标事件监听器

使用new JPanel()创建一个JPanel对象,并将其赋给panelCenter变量。使用setLayout(null)方法将面板的布局管理器设置为绝对定位,这样可以手动指定组件的位置和大小。通过setBackground(Color.WHITE)方法将面板的背景颜色设置为白色。

使用new JTextField("QQ号码/手机/邮箱")创建一个文本框组件,并将其赋给accountField变量。使用setBounds(50, 50, 300, 30)方法设置组件的位置和大小。你可以根据需要修改这些值。

类似地,使用new JPasswordField("密码")创建一个密码输入框组件,并将其赋给passwordField变量。使用setBounds(50, 100, 300, 30)方法设置组件的位置和大小。

使用new JCheckBox("自动登录")创建一个多选按钮组件,并将其赋给autoLoginCheckbox变量。使用setBounds(50, 150, 100, 30)方法设置组件的位置和大小。

类似地,使用new JCheckBox("记住密码")创建一个多选按钮组件,并将其赋给rememberPwdCheckbox变量。使用setBounds(150, 150, 100, 30)方法设置组件的位置和大小。

使用new JLabel("找回密码")创建一个标签组件,并将其赋给forgetPwdLabel变量。使用setBounds(250, 150, 100, 30)方法设置组件的位置和大小。

监听输入框组件

为输入框组件添加焦点监听器,以在用户点击输入框时清除默认文本,并在用户离开输入框时恢复默认文本

添加登录按钮和事件监听器

JButton loginButton = new JButton("登录");
loginButton.setBounds(150, 200, 100, 30);
// 添加点击事件监听器

使用new JButton("登录")创建一个按钮组件,并将其赋给loginButton变量。使用setBounds(150, 200, 100, 30)方法设置组件的位置和大小。

你可以为登录按钮添加点击事件监听器,以执行登录操作。

创建小面板并添加到主面板中

JPanel registerPanel = new JPanel();
registerPanel.setBounds(0, 250, 200, 50);
// 添加鼠标事件监听器

JPanel qrcodePanel = new JPanel();
qrcodePanel.setBounds(200, 250, 200, 50);
// 添加鼠标事件监听器

panel.add(registerPanel);
panel.add(qrcodePanel);

使用new JPanel()创建一个JPanel对象,并将其赋给registerPanel变量。使用setBounds(0, 250, 200, 50)方法设置组件的位置和大小。

类似地,使用new JPanel()创建一个JPanel对象,并将其赋给qrcodePanel变量。使用setBounds(200, 250, 200, 50)方法设置组件的位置和大小。

将registerPanel和qrcodePanel添加到主面板panel中。

设置窗口可见

frame.add(panel);
frame.setVisible(true);
// 添加窗口事件监听器,以确保窗口获取焦点

使用add(panel)方法将主面板panel添加到窗口frame中。使用setVisible(true)方法将窗口设置为可见状态。

添加一个窗口事件监听器,以确保窗口获取焦点。文章来源地址https://www.toymoban.com/news/detail-772567.html

到了这里,关于Java模拟QQ登录界面(GUI)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在 Android Studio 中创建一个简单的 QQ 登录界面

            打开 Android Studio,选择 \\\"Start a new Android Studio project\\\",然后填写应用程序名称、包名和保存路径等信息。接下来,选择 \\\"Phone and Tablet\\\" 作为您的设备类型,然后选择 \\\"Empty Activity\\\" 作为您的 Activity 模板。         在 Android Studio 中,布局文件用于指定应用程序的用

    2024年02月07日
    浏览(51)
  • Android仿QQ界面,登录后使用Toast显示账号和密码

    1.新建工程。 2.完成界面设计。 3.完成登录功能:单击“登录”按钮,使用Toast显示输入的用户名和密码。 MainActivity.java文件 activity_main.xml文件 运行效果:  

    2024年02月15日
    浏览(40)
  • 自动化测试Lab①—selenium模拟输入账号密码登录QQ空间

    目录 前言:selenium介绍 实验过程:业务分析 实验过程:编写自动化测试代码 Selenium是一个广泛使用的开源自动化测试工具,主要用于Web应用程序的功能测试和自动化。它提供了一系列的API和工具,允许开发人员使用多种编程语言(如Java、Python、C#等)来编写自动化脚本。

    2024年02月20日
    浏览(45)
  • java实现qq聊天(超详细)

    功能要求: 聊天室:使用图形用户界面,能实现一个聊天室中多人聊天,可以两人私聊。 QQ:实现类似QQ登录、聊天等功能。 注意:有一定等级。完全照搬别人的代码,不超过70分。 提示:使用socket通信 前面是逐步讲解,要是想看最终代码,请直接找到该文章的最下面 // 感谢这

    2024年02月07日
    浏览(37)
  • Java发送(QQ)邮箱、验证码发送

    使用Java应用程序发送 E-mail 十分简单,但是首先需要在项目中导入 JavaMail API 和Java Activation Framework (JAF) 的jar包。 菜鸟教程提供的下载链接: JavaMail mail.jar 1.4.5 JAF(版本 1.1.1) activation.jar 1.1 导包 在基础Java工程中 首先在项目目录下创建 libs 文件夹后将下载好的 jar包 复制进去

    2024年02月09日
    浏览(42)
  • Java+Swing+mysql仿QQ聊天工具

    系统主要功能:用户登陆、好友列表、好友聊天、服务器日志 1.Chat.java Java+Swing实现学生选课管理系统 Java+Swing实现学校教务管理系统 Java+Swing+sqlserver学生成绩管理系统 Java+Swing用户信息管理系统 Java+Swing实现的五子棋游戏 基于JavaSwing 银行管理系统 Java+Swing+mysql仿QQ聊天工具

    2024年02月08日
    浏览(37)
  • C++模仿qq界面

    2024年04月09日
    浏览(32)
  • Qt之高仿QQ系统设置界面

    QQ或360安全卫士的设置界面都是非常有特点的,所有的配置项都在一个垂直的ScrollArea中,但是又能通过左侧的导航栏点击定位。这样做的好处是既方便查看指定配置项,又方便查看所有配置项。 下面左边是当前最新版QQ的系统设置界面,右边是我的高仿版本,几乎一毛一样

    2024年02月02日
    浏览(38)
  • qt学习:模仿qq界面+添加资源+无边框界面+修改样式

    目录 一,创建登录ui界面类 LoginWidget 二,添加图片资源 三,通过样式的方法将图片设置成圆圈的背景 四,新建登录后的ui界面  MWindow  简陋的就可以,因为只为了学习,可以自己补充 五,新建三个嵌套ui界面类,ChatWidget聊天界面   FriendWiidget好友界面   CollectWidget收藏界面

    2024年01月23日
    浏览(42)
  • Python实现批量QQ自动登录

    需要使用 Python 设计一个 QQ 的批量自动登录的脚本, 查了一些资料, 通过调 API 实现该功能。 代码主要使用了几个常用的 API win32gui win32api win32con PyUserInput 前置需要安装 PyHook,否则会报错 pykeyboard pymouse 参考链接 PyHook3 安装 https://www.cnblogs.com/Denon-CAT/p/12771357.html 注意 在使用该程

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包