经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
模拟QQ登录
来源:cnblogs  作者:51人去楼空  时间:2018/10/29 10:04:22  对本文有异议

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

 


 

 


 

  1. 1 import javax.swing.JFrame;
  2. 2 import javax.swing.JPanel;
  3. 3 import javax.swing.border.EmptyBorder;
  4. 4 import javax.swing.JLabel;
  5. 5 import javax.swing.JOptionPane;
  6. 6
  7. 7 import java.awt.Font;
  8. 8 import javax.swing.JTextField;
  9. 9 import javax.swing.SwingConstants;
  10. 10 import javax.swing.JButton;
  11. 11 import javax.swing.JPasswordField;
  12. 12
  13. 13 import java.awt.event.ActionEvent;
  14. 14 import java.awt.event.ActionListener;
  15. 15 import javax.swing.ImageIcon;
  16. 16 import java.awt.Color;
  17. 17
  18. 18 public class Login extends JFrame {
  19. 19 private JPanel contentPane; //面板
  20. 20 private JTextField tName;//账号输入框
  21. 21 private JPasswordField passwordField; //密码输入框
  22. 22 private JLabel lblBanner; //QQ登录图片
  23. 23 public static void main(String[] args) {
  24. 24 // TODO Auto-generated method stub
  25. 25 Login frame = new Login(); //实例化Login
  26. 26 frame.setVisible(true); //使窗体显示
  27. 27 }
  28. 28 public Login() { //无参构造方法
  29. 29 setResizable(false); //窗口边界不可拉伸
  30. 30 setTitle("QQ登录窗口");//设置窗口标题
  31. 31 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭并退出
  32. 32 setBounds(100, 100, 406, 289);//初始位置及大小
  33. 33
  34. 34 contentPane = new JPanel();//实例化面板
  35. 35 contentPane.setBackground(Color.white);//背景颜色
  36. 36 contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));//外边距
  37. 37 setContentPane(contentPane);//将面板放进窗口
  38. 38 contentPane.setLayout(null);//布局方式
  39. 39
  40. 40 JLabel lblName = new JLabel("用户名:"); //账号标签
  41. 41 lblName.setFont(new Font("幼圆", Font.PLAIN, 16));//标签字体 类型 大小
  42. 42 lblName.setBounds(115, 144, 64, 18);//初始位置及大小
  43. 43 contentPane.add(lblName); //将标签添加进面板
  44. 44
  45. 45 tName = new JTextField();//实例化账号输入框
  46. 46 tName.setBounds(180, 143, 156, 21);//初始位置及大小
  47. 47 contentPane.add(tName);//添加进面板
  48. 48 tName.setColumns(10);//最大输入列数
  49. 49
  50. 50 tName.addActionListener(new ActionListener() { // 添加动作监听的事件
  51. 51 @Override
  52. 52 public void actionPerformed(ActionEvent e) { // 发生操作时
  53. 53 passwordField.requestFocus(); //当写完账号后回车,自动跳转到密码框
  54. 54 }
  55. 55 });
  56. 56
  57. 57 JLabel lblPwd = new JLabel("密码:");//密码标签
  58. 58 lblPwd.setHorizontalAlignment(SwingConstants.RIGHT);//水平居中
  59. 59 lblPwd.setFont(new Font("幼圆", Font.PLAIN, 16));//字体
  60. 60 lblPwd.setBounds(125, 175, 54, 15);//位置大小
  61. 61 contentPane.add(lblPwd);//添加
  62. 62
  63. 63 passwordField = new JPasswordField();//实例化
  64. 64 passwordField.setBounds(180, 172, 156, 21);//位置大小
  65. 65 contentPane.add(passwordField);//添加
  66. 66 passwordField.addActionListener(new ActionListener() { // 添加动作监听的事件,输入完密码后回车,作用和登录按钮相同
  67. 67 @Override
  68. 68 public void actionPerformed(ActionEvent e) { // 发生操作时
  69. 69 if (tName.getText().equals("yujie") && passwordField.getText().equals("yujie")) { // “登陆成功”的条件
  70. 70 JOptionPane.showMessageDialog(null, "登录成功!", "Success", JOptionPane.INFORMATION_MESSAGE); // 弹出框:“登陆成功!”
  71. 71 } else if (tName.getText().equals("") || passwordField.getText().equals("")) { // 文本框为空时
  72. 72 JOptionPane.showMessageDialog(null, "用户名或密码不能为空!", "Warning", JOptionPane.WARNING_MESSAGE); // 弹出框:“用户名或密码不能为空!”
  73. 73 } else { // 以上条件都不满足的时候
  74. 74 JOptionPane.showMessageDialog(null, "用户名或密码错误!", "Error", JOptionPane.ERROR_MESSAGE); // 弹出框:“用户名或密码错误!”
  75. 75 }
  76. 76 }
  77. 77 });
  78. 78
  79. 79 JButton btnLogin = new JButton("登 录"); //登录按钮
  80. 80 btnLogin.addActionListener(new ActionListener() { // 添加动作监听的事件
  81. 81 @Override
  82. 82 public void actionPerformed(ActionEvent e) { // 发生操作时
  83. 83 if (tName.getText().equals("yujie") && passwordField.getText().equals("yujie")) { // “登陆成功”的条件
  84. 84 JOptionPane.showMessageDialog(null, "登录成功!", "Success", JOptionPane.INFORMATION_MESSAGE); // 弹出框:“登陆成功!”
  85. 85 } else if (tName.getText().equals("") || passwordField.getText().equals("")) { // 文本框为空时
  86. 86 JOptionPane.showMessageDialog(null, "用户名或密码不能为空!", "Warning", JOptionPane.WARNING_MESSAGE); // 弹出框:“用户名或密码不能为空!”
  87. 87 } else { // 以上条件都不满足的时候
  88. 88 JOptionPane.showMessageDialog(null, "用户名或密码错误!", "Error", JOptionPane.ERROR_MESSAGE); // 弹出框:“用户名或密码错误!”
  89. 89 }
  90. 90 }
  91. 91 });
  92. 92 btnLogin.setFont(new Font("幼圆", Font.PLAIN, 16));//按钮字体
  93. 93 btnLogin.setBounds(125, 216, 156, 23);//位置大小
  94. 94 contentPane.add(btnLogin);//添加
  95. 95
  96. 96
  97. 97 lblBanner = new JLabel("");//用于添加QQ界面图片
  98. 98 lblBanner.setIcon(new ImageIcon(Login.class.getResource("QQLogin.png")));//图标
  99. 99 lblBanner.setBounds(0, 0, 400, 129);//位置大小
  100. 100 contentPane.add(lblBanner);//添加
  101. 101
  102. 102 JLabel lblIcon = new JLabel("");//用于添加头像
  103. 103 lblIcon.setIcon(new ImageIcon(Login.class.getResource("yujie.png")));//图标
  104. 104 lblIcon.setBounds(56, 140, 55, 55);//位置大小
  105. 105 contentPane.add(lblIcon);//添加
  106. 106 }
  107. 107 }

说明:

首先注释很详细。

登录三种情况:

一种是无输入,弹出警告

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

最后是输入账号密码都为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群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号