2018-10-28 15:54:38 开始写



 import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane; import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.JButton;
import javax.swing.JPasswordField; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import java.awt.Color; public class Login extends JFrame {
private JPanel contentPane; //面板
private JTextField tName;//账号输入框
private JPasswordField passwordField; //密码输入框
private JLabel lblBanner; //QQ登录图片
public static void main(String[] args) {
// TODO Auto-generated method stub
Login frame = new Login(); //实例化Login
frame.setVisible(true); //使窗体显示
}
public Login() { //无参构造方法
setResizable(false); //窗口边界不可拉伸
setTitle("QQ登录窗口");//设置窗口标题
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭并退出
setBounds(100, 100, 406, 289);//初始位置及大小 contentPane = new JPanel();//实例化面板
contentPane.setBackground(Color.white);//背景颜色
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));//外边距
setContentPane(contentPane);//将面板放进窗口
contentPane.setLayout(null);//布局方式 JLabel lblName = new JLabel("用户名:"); //账号标签
lblName.setFont(new Font("幼圆", Font.PLAIN, 16));//标签字体 类型 大小
lblName.setBounds(115, 144, 64, 18);//初始位置及大小
contentPane.add(lblName); //将标签添加进面板 tName = new JTextField();//实例化账号输入框
tName.setBounds(180, 143, 156, 21);//初始位置及大小
contentPane.add(tName);//添加进面板
tName.setColumns(10);//最大输入列数 tName.addActionListener(new ActionListener() { // 添加动作监听的事件
@Override
public void actionPerformed(ActionEvent e) { // 发生操作时
passwordField.requestFocus(); //当写完账号后回车,自动跳转到密码框
}
}); JLabel lblPwd = new JLabel("密码:");//密码标签
lblPwd.setHorizontalAlignment(SwingConstants.RIGHT);//水平居中
lblPwd.setFont(new Font("幼圆", Font.PLAIN, 16));//字体
lblPwd.setBounds(125, 175, 54, 15);//位置大小
contentPane.add(lblPwd);//添加 passwordField = new JPasswordField();//实例化
passwordField.setBounds(180, 172, 156, 21);//位置大小
contentPane.add(passwordField);//添加
passwordField.addActionListener(new ActionListener() { // 添加动作监听的事件,输入完密码后回车,作用和登录按钮相同
@Override
public void actionPerformed(ActionEvent e) { // 发生操作时
if (tName.getText().equals("yujie") && passwordField.getText().equals("yujie")) { // “登陆成功”的条件
JOptionPane.showMessageDialog(null, "登录成功!", "Success", JOptionPane.INFORMATION_MESSAGE); // 弹出框:“登陆成功!”
} else if (tName.getText().equals("") || passwordField.getText().equals("")) { // 文本框为空时
JOptionPane.showMessageDialog(null, "用户名或密码不能为空!", "Warning", JOptionPane.WARNING_MESSAGE); // 弹出框:“用户名或密码不能为空!”
} else { // 以上条件都不满足的时候
JOptionPane.showMessageDialog(null, "用户名或密码错误!", "Error", JOptionPane.ERROR_MESSAGE); // 弹出框:“用户名或密码错误!”
}
}
}); JButton btnLogin = new JButton("登 录"); //登录按钮
btnLogin.addActionListener(new ActionListener() { // 添加动作监听的事件
@Override
public void actionPerformed(ActionEvent e) { // 发生操作时
if (tName.getText().equals("yujie") && passwordField.getText().equals("yujie")) { // “登陆成功”的条件
JOptionPane.showMessageDialog(null, "登录成功!", "Success", JOptionPane.INFORMATION_MESSAGE); // 弹出框:“登陆成功!”
} else if (tName.getText().equals("") || passwordField.getText().equals("")) { // 文本框为空时
JOptionPane.showMessageDialog(null, "用户名或密码不能为空!", "Warning", JOptionPane.WARNING_MESSAGE); // 弹出框:“用户名或密码不能为空!”
} else { // 以上条件都不满足的时候
JOptionPane.showMessageDialog(null, "用户名或密码错误!", "Error", JOptionPane.ERROR_MESSAGE); // 弹出框:“用户名或密码错误!”
}
}
});
btnLogin.setFont(new Font("幼圆", Font.PLAIN, 16));//按钮字体
btnLogin.setBounds(125, 216, 156, 23);//位置大小
contentPane.add(btnLogin);//添加 lblBanner = new JLabel("");//用于添加QQ界面图片
lblBanner.setIcon(new ImageIcon(Login.class.getResource("QQLogin.png")));//图标
lblBanner.setBounds(0, 0, 400, 129);//位置大小
contentPane.add(lblBanner);//添加 JLabel lblIcon = new JLabel("");//用于添加头像
lblIcon.setIcon(new ImageIcon(Login.class.getResource("yujie.png")));//图标
lblIcon.setBounds(56, 140, 55, 55);//位置大小
contentPane.add(lblIcon);//添加
}
}

说明:

首先注释很详细。

登录三种情况:

一种是无输入,弹出警告

一种的输入错误,弹出错误

最后是输入账号密码都为yujie,yujie,弹出成功


感谢阅读(谢谢、Thank you、Salamat Do(撒拉玛特朵)、あリがCám o*n(嘉蒙)とゥ(阿里嘎都)、감사합니다 (勘三哈咪瘩)、terima Kasih(

得力马卡系)、kob-khun(寇布库恩)、dhanyavaad(达尼阿瓦德)、toda(透达)、te?ekkür ederim(特谢库尔埃戴里姆)、 

Dzie,kuje(以库以而)、Spasibo(思巴喜柏)、Danke(但可)、shokran(休克朗)、Obrigada(欧布哩嘎搭)、dank u(当Q)、
Merci(梅呵西)、Gracias(格拉喜亚思)、Grazie(格啦姬)、Благодарности、Tak、Kiitos、Díky、Hvala、Mul?umesc

、Takk、Ευχαριστ


模拟QQ登录的更多相关文章

  1. WPF简单模拟QQ登录背景动画

    介绍 之所以说是简单模拟,是因为我不知道QQ登录背景动画是怎么实现的.这里是通过一些办法把它简化了,做成了类似的效果 效果图 大体思路 首先把背景看成是一个4行8列的点的阵距,X轴Y轴都是距离70.把 ...

  2. Android简易实战教程--第二十二话《自定义组合控件模拟qq登录下拉框和其中的一些”小技巧”》

    转载此文章请注明出处:点击打开链接   http://blog.csdn.net/qq_32059827/article/details/52313516 首先,很荣幸此专栏能被CSDN推荐到主页.荣 ...

  3. WPF简单模拟QQ登录背景动画(转)

    介绍 之所以说是简单模拟,是因为我不知道QQ登录背景动画是怎么实现的.这里是通过一些办法把它简化了,做成了类似的效果 效果图 大体思路 首先把背景看成是一个4行8列的点的阵距,X轴Y轴都是距离70.把 ...

  4. 基于vite3+tauri模拟QQ登录切换窗体|Tauri自定义拖拽|最小/大/关闭

    前两天有给大家分享tauri+vue3快速搭建项目.封装桌面端多开窗口.今天继续来分享tauri创建启动窗口.登录窗口切换到主窗口及自定义拖拽区域的一些知识.希望对想要学习或正在学习的小伙伴有些帮助. ...

  5. QQ模拟自动登录实现

    QQ模拟自动登录实现 本篇文章主要介绍"QQ模拟自动登录实现(带验证码)",主要涉及到java 实现QQ自动登录(带验证码)方面的内容,对于java 实现QQ自动登录(带验证码)感 ...

  6. 利用phantomjs模拟QQ自动登录

    之前为了抓取兴趣部落里的数据,研究了下QQ自动登录. 当时搜索了一番,发现大部分方法都已经失效了,于是准备自己开搞. 第一个想到的就是参考网上已有方案的做法,梳理登陆js的实现,通过其他语言重写.考虑 ...

  7. Android(java)学习笔记209:采用get请求提交数据到服务器(qq登录案例)

    1.GET请求:    组拼url的路径,把提交的数据拼装url的后面,提交给服务器. 缺点:(1)安全性(Android下提交数据组拼隐藏在代码中,不存在安全问题)  (2)长度有限不能超过4K(h ...

  8. Android(java)学习笔记212:中文乱码的问题处理(qq登录案例)

    1.我们在之前的笔记中LoginServlet.java中,我们Tomcat服务器回复给客户端的数据是英文的"Login Success","Login Failed&q ...

  9. 日常API之QQ登录

    这次的QQ登录我研究了好久惹,今天终于可以和大家分享啦! 大家都知道,QQ登录有很多方法,例如使用账号密码登录,手机版企鹅扫码登录等等(这些方法只能验证QQ是否成功登录,并没有聊天等功能) 首先就来使 ...

随机推荐

  1. python学习目录(转载)

    python基础篇 python 基础知识    python 初始python    python 字符编码    python 类型及变量    python 字符串详解 python 列表详解 ...

  2. SearchContextMissingException[No search context found for id [1545782]]

    这个原因是scroll的时间设置不够久,设久一些就可以了.

  3. python中dict的fromkeys用法

    fromkeys是创造一个新的字典.就是事先造好一个空字典和一个列表,fromkeys会接收两个参数,第一个参数为从外部传入的可迭代对象,会将循环取出元素作为字典的key值,另外一个参数是字典的val ...

  4. Servlet----------ServletConfig

    1. 什么是 ServletConfig servletConfig对象:用于封装servlet的配置信息.从一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对servlet自身有效 ...

  5. SOCKS5 协议解析

    代理 根据 HTTP 1.1 的定义,proxy 是: An intermediary program which acts as both a server and a client for the ...

  6. centos who命令 查看当前登录系统用户信息

    who 显示当前登录系统的用户,但w显示的更为详细 默认输出 [root@mysql ~]# who //用户名.登录终端.登录时间 root pts/ -- : (192.168.0.110) -a ...

  7. 前端 HTML 常用标签 head标签相关内容 title标签 网页的标题信息

    title标签 <title>标签:在<title>和</title>标签之间的文字内容是网页的标题信息,它会显示在浏览器标签页的标题栏中. 可以把它看成是一个网页 ...

  8. LigerUi遮罩的两个方法

    $.ligerDialog.waitting('正在查询,请稍候...'); $.ligerDialog.close();

  9. LigerUi自动检索输入

    var availableTags = [ "ActionScript", "AppleScript", "Asp", "BASI ...

  10. python按修改时间顺序排列文件

    import os def sort_file_by_time(file_path): files = os.listdir(file_path) if not files: return else: ...