1. package com.xf.jf;
    2. import com.xf.beans.StateInfo;
    3. import com.xf.beans.UserInfo;
    4. import com.xf.dao.StateDao;
    5. import com.xf.dao.UserDao;
    6. import javax.swing.*;
    7. import javax.swing.event.AncestorListener;
    8. import java.awt.*;
    9. import java.awt.event.*;
    10. import java.util.List;
    11. import java.util.Vector;
    12. public class LoginJF extends JFrame { //加载界面方法 frame窗体
    13. //背景图429 156
    14. //构造方法
    15. LoginJF that =this;//把自己复制
    16. int w=429,h=350;//设置宽度高度
    17. UserDao userDao =new UserDao();//用户持久层对象
    18. StateDao stateDao =new StateDao();//状态持久层对象
    19. public LoginJF(){
    20. //第一步给窗体添加组建容器
    21. JPanel bgJP =new JPanel();//容器创建
    22. bgJP.setBackground(Color.WHITE);
    23. //loginBtn.addActionListener(new ActionListener()
    24. //组建容器添加布局 绝对布局
    25. bgJP.setLayout(null);
    26. this.getContentPane().add(bgJP); //把容器放入窗体
    27. //登陆组件
    28. //用户标签
    29. JLabel unameJl =new JLabel("用户名:");
    30. unameJl.setBounds(95,170,100,26);
    31. unameJl.setFont(new Font("微软雅黑",Font.BOLD,14));//调整字体大小
    32. bgJP.add(unameJl);
    33. //用户名输入框
    34. JTextField unameJT=new JTextField();
    35. unameJT.setBounds(150,170,150,26);
    36. unameJT.setFont(new Font("微软雅黑",Font.PLAIN,12));//调整字体大小
    37. bgJP.add(unameJT);
    38. //用户选择登录状态
    39. JComboBox stateJC =new JComboBox();
    40. //下拉框加载数据
    41. //添加数据库源
    42. Vector v =new Vector<>();
    43. List<StateInfo> stateInfos = stateDao.getStates();
    44. //把数据集合中的用户状态名称放入数据源
    45. for (StateInfo stateInfo:stateInfos ) {
    46. v.add(stateInfo.getState());
    47. }
    48. DefaultComboBoxModel aMoudel =new DefaultComboBoxModel<>(v);//创建模型
    49. stateJC.setModel(aMoudel);
    50. stateJC.setBounds(300,170,100,26);//
    51. bgJP.add(stateJC);
    52. //添加背景图片
    53. JLabel bgImg=new JLabel("hello");
    54. //设置背景图的位置以及大小
    55. bgImg.setBounds(0,0,w,156);//xy轴坐标,宽高
    56. bgImg.setIcon(new ImageIcon(this.getClass().getResource("../images/QQ.png")));//设置背景图
    57. bgJP.add(bgImg);
    58. //密码标签
    59. JLabel pwdJl =new JLabel("密 码:");
    60. pwdJl.setBounds(95,210,100,26);
    61. pwdJl.setFont(new Font("微软雅黑",Font.BOLD,14));//调整字体大小
    62. bgJP.add(pwdJl);
    63. JPasswordField pwdJT=new JPasswordField();//密码输入框
    64. pwdJT.setBounds(150,210,150,26);
    65. pwdJT.setFont(new Font("微软雅黑",Font.PLAIN,12));//调整字体大小
    66. bgJP.add(pwdJT);
    67. //登录按钮
    68. JButton loginBtn = new JButton("登 陆"); //登录按钮
    69. loginBtn.setBounds(150,250,150,32);
    70. loginBtn.setFont(new Font("微软雅黑",Font.PLAIN,14));//调整字体大小
    71. //添加点击事件
    72. loginBtn.addActionListener(new ActionListener() {
    73. //监听按钮
    74. @Override
    75. public void actionPerformed(ActionEvent e) {
    76. //弹窗效果
    77. //JOptionPane.showMessageDialog(LoginJF.this,"登录成功");
    78. //获取用户输入到用户名和密码
    79. String username= unameJT.getText();
    80. String password =pwdJT.getText();
    81. //JOptionPane.showMessageDialog(LoginJF.this,"您输入的用户名为:"+ username + ",密码为"+password);
    82. //判断用户名和密码为空的情况
    83. if(username.trim().length()==0||password.trim().length()==0){
    84. JOptionPane.showMessageDialog(LoginJF.this,"用户名或密码不能为空");
    85. return;
    86. }
    87. // /* 判断密码复杂度,方便测试暂不写
    88. if(password.trim().length()<6){
    89. JOptionPane.showMessageDialog(LoginJF.this,"密码不能小于6位数");
    90. return;
    91. }
    92. // */
    93. UserInfo userInfo =userDao.login(username,password);//通过userdao对象调用它的登陆验证方法
    94. //判断用户是否登录成功
    95. if(userInfo==null){
    96. JOptionPane.showMessageDialog(LoginJF.this,"用户名或密码错误");
    97. }
    98. else{
    99. JOptionPane.showMessageDialog(LoginJF.this,"登录成功!");
    100. /*
    101. QQMainJF qqMainJF =new QQMainJF();
    102. qqMainJF.loadJF();
    103. that.setVisible(false);
    104. */
    105. //qq主界面,当我们登陆成功跳转到主界面到时候把当前用户信息传递给主界面
    106. QQMainJFrame qqMainJFrame =new QQMainJFrame(userInfo);
    107. qqMainJFrame.setVisible(true);
    108. that.setVisible(false);
    109. }
    110. }
    111. });
    112. bgJP.add(loginBtn);
    113. //注册账号
    114. //JLabel registerJL =new JLabel("注册账号");//识别网页标签
    115. JLabel registerJL =new JLabel("注册账号");
    116. registerJL.setBounds(10,288,100,26);
    117. registerJL.setForeground(Color.GRAY);
    118. registerJL.setFont(new Font("微软雅黑",Font.PLAIN,14));//调整字体大小
    119. //添加注册账号监听,监听是否划过或者点击
    120. registerJL.addMouseListener(new MouseListener() {
    121. @Override
    122. public void mouseClicked(MouseEvent e) {
    123. RegisterJF registerJF =new RegisterJF();
    124. registerJF.loadJF();
    125. registerJL.setForeground(Color.blue);
    126. //that.loadJF();
    127. }
    128. @Override
    129. public void mousePressed(MouseEvent e) {
    130. }
    131. @Override
    132. public void mouseReleased(MouseEvent e) {
    133. }
    134. @Override
    135. public void mouseEntered(MouseEvent e) {//
    136. registerJL.setForeground(Color.darkGray);
    137. }
    138. @Override
    139. public void mouseExited(MouseEvent e) {
    140. registerJL.setForeground(Color.GRAY);
    141. }
    142. });
    143. bgJP.add(registerJL);
    144. }
    145. public void loadJF(){
    146. this.setVisible(true);//设置本窗体显示 true可见 false不可见
    147. this.setSize(w,h);//设置窗体的显示大小
    148. this.setResizable(true);//设置窗体是否拉伸
    149. this.setLocationRelativeTo(null);//让窗体居中显示
    150. this.setTitle("盗版OICQ");//添加标题
    151. this.setIconImage(new ImageIcon(this.getClass().getResource("../images/1.jpg")).getImage());//设置窗体logo
    152. this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//界面关闭之后,同步关闭程序进程
    153. }
    154. public void btnclick(){
    155. }
    156. public static void main(String[] args){//程序入口
    157. LoginJF loginJF=new LoginJF();//创建窗体时使用
    158. loginJF.loadJF();
    159. }
    160. }