QQ登陆按钮事件

 

 

实现QQlogin界面点登陆,弹出新界面时,旧界面自动关闭

 


QQ登陆按钮事件
 
QQ登陆按钮事件
 

解题思路:
把JFrame传到监听器里面;
把jf.setVisible(false);/或者jf.dispose();把原窗口消掉;

遇到大问题:
1.传参的问题!!!!!  这个问题很严重啊! 
 这段可以忽略,纯粹心理历程(【这个问题困扰了我很久很久很久很久~ (我认为);
 没想法的时候,向大神们请教,我按照他们说的去做,发现怎么做怎么错;
 那天晚上没能解决到这个问题,到了另外一天到公司让大神看代码才发现自己犯了个很严重的错误~
  我没有意识到的很严重的错误~ (这问题,没人教我真不懂~)
 估计我是上传参课的时候太看小他了~导致犯这么大错。 太悲催了,太悲催了~ 
 被问题困扰的感觉太难过了!】}
2.有思路,可是不知道怎么实现~ 

 

**问题的根源+解决方法:
1.【 //给事件源添加一个监听器方法,同时绑定事件处理类的对象ff
     jb3.addActionListener(ff);
    //给事件源添加一个监听器方法,同时绑定事件处理类的对象ll
     jb3.addActionListener(ll);                                                          】//错误代码

从这里我发现我还没能掌握到监听器的方法,只能给事件源添加一个监听器方法,绑定的对象只有一个!
因为用构造方法传参的时候,用一个构造器把全部参数都传进去啊!!我就分开了2个~ 必错无疑了~
我还以为是监听器的问题~ 当然,一开始是真的有问题~
一开始把QQlogin传进去了,现在想,应该没问题~ 只是自己不懂~ 
然后很疑惑的时候,就随便敲,随便敲,希望自己能中狗屎运~ 
后来发现,在这个严密的计算机语言中,乱搞是不行的,扎实的基础十分重要!
下层物质基础决定上层建筑嘛~ (不知道说错没有)

 

2.动手能力不足,跟计算机还混的不熟!
解决方法:还是得多敲,没有捷径~只有跟他混多了才能熟嘛~ 多敲! 

 

问题还是有很多的~因为最近功课一直拉下了~ 有些问题都忘了~


一种占主导地位的感觉: 我不是一只小菜鸟,是一只大大大菜鸟~   aweful feeling!!!
                     
现在很多问题还是自己解决不了,都要用别人的思路。
要学会独立解决问题啊! 不然一直都是菜鸟


附上代码:
/**********入口主函数************/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
//import javax.swing.JRootPane;


    /**
     * 创建一个简单的QQ登录界面
     * @author Administrator
     *
     */
public class QQlogin {

  

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
   QQlogin lo = new QQlogin();
   lo.showFrame();
  //讲登陆界面对象通过构造方法传入到ButtonAction类中
     
 }
 //声明一个全局的对象名
 private ButtonAction ll = null ;
 public JFrame jf;
 
 
  //显示一个窗体界面的方法
 public void showFrame(){
     //设置一个窗体对象
  jf = new JFrame(); 
  //设置一个 标题
  jf.setTitle("QQ登陆界面");
  //设置大小
  jf.setSize(380, 300);
  //设置个起始位置,桌面中央
  jf.setLocationRelativeTo(null);
  //设置关闭
  jf.setDefaultCloseOperation(2);
  //设置能否改变窗体大小
  jf.setResizable(false);
   //设置窗体布局,边框布局
  jf.setLayout(new BorderLayout());

       /******窗体北边******/
  JPanel jp1 = NorthPanel();
  //把标签添加到窗体北边
  jf.add(jp1,BorderLayout.NORTH);
        /******窗体西边******/
  JPanel jp2 = WestPanel();
  //把标签添加到窗体北边
  jf.add(jp2,BorderLayout.WEST);
        /******窗体中间******/
  JPanel jp3 = CenterPanel();
     //把标签添加到窗体中间
  jf.add(jp3,BorderLayout.CENTER);
        /******窗体南边******/
  JPanel jp4 = SouthPanel();
     //把标签添加到窗体南边
  jf.add(jp4,BorderLayout.SOUTH);
  
  //设置背景,让面板透明
  BackGroud(jf);
  
   jp1.setOpaque(false);
   jp2.setOpaque(false);
   jp3.setOpaque(false);

  jf.setVisible(true);
   
 }
 
 //**************设置背景****************************/
 
 public void BackGroud(JFrame jf){
    //实例化背景图片
    ImageIcon img = new ImageIcon("images/4.jpg");//加载背景图片
    JLabel image1 = new JLabel(img);
 //添加图片至Frame的第二层
    jf.getLayeredPane().add(image1, new Integer(Integer.MIN_VALUE));
 //把标签的大小位置设置为图片刚好填充整个面
    image1.setBounds(0,0,380, 300);
    //image1.setBounds(0,0,img.getIconWidth(), img.getIconHeight());
    //获取frame的最上层面板为了设置其背景颜色\  Container f4得到窗口放panel的一层
    //设置第一层面板对象
    Container f4=jf.getContentPane();
 //设置透明,强制转型
    ((JComponent) f4).setOpaque(false);//

 
}
 /*****************窗体北边*************************/
 
 public JPanel NorthPanel(){
 //panel们默认布局为流布局,居中。
 JPanel jp1 = new JPanel();
 jp1.setPreferredSize(new Dimension(380,130));
 return jp1;
 }
 
  /*****************窗体西边*************************/
 
 public JPanel WestPanel(){
 //实例化一个面板
 JPanel jp2 = new JPanel();
 //设置面板布局
 jp2.setLayout(new FlowLayout(FlowLayout.CENTER,15,5));
 //实例化swing包下ImageIcon类对象
 ImageIcon icon2 = new ImageIcon("images/2.jpg");
 //实例化一个标签对象
 JLabel label2 = new JLabel(icon2);
 //把标签加到面板上
 jp2.add(label2);
 return jp2;
 }
 
 /*****************窗体中间*************************/
 
 public JPanel CenterPanel(){
 //实例化一个面板
 JPanel jp3 = new JPanel();
 //设置面板布局
 jp3.setLayout(new FlowLayout(FlowLayout.LEFT,4,5));
    //设置下拉框
    JComboBox<String> combo = new JComboBox<String>();
    //设置可编辑
    combo.setEditable(true);
    combo.setPreferredSize(new Dimension(175,22));
    //添加到面板上
    jp3.add(combo);
    //添加“注册账号”按钮
    JLabel jb1 = new JLabel("注册账号");
   //jb1.setOpaque(false);
    jp3.add(jb1);
    //添加“输入密码”输入框
    JPasswordField pass = new JPasswordField();
    pass.setPreferredSize(new Dimension(175,22));
   //添加到面板上
    jp3.add(pass);
    //添加“找回密码”按钮
    JLabel jb2 = new JLabel("找回密码");
    jp3.add(jb2);

 //加入选择框
 JCheckBox jc1 = new JCheckBox("记住密码");
 jc1.setOpaque(false);
 JCheckBox jc2 = new JCheckBox("自动登陆");
 jc2.setOpaque(false);
 jp3.add(jc1);
 jp3.add(jc2);
 //同时将账号和密码输入框对象通过构造方法传入到LoginListener类中
 ll = new ButtonAction(combo,pass,jf);
 return jp3;
 }

 /*****************窗体南边*************************/
 
 public JPanel SouthPanel(){
 //实例化一个面板
 JPanel jp4 = new JPanel();
 //设置面板布局
 jp4.setLayout(new FlowLayout(FlowLayout.CENTER,1,13));
 //实例化一个按钮对象
 jp4.setBackground(new Color(203,139,95));
 JButton jb3 = new JButton("登      录");
 //ButtonAction ff = new ButtonAction(jf);
 //给登陆按钮添加一个监听器
 
 jp4.setPreferredSize(new Dimension(0,48));
    jb3.setPreferredSize(new Dimension(140,30));
    jp4.add(jb3);
   
    //给事件源添加一个监听器方法,同时绑定事件处理类的对象ff
    jb3.addActionListener(ll);
    //给事件源添加一个监听器方法,同时绑定事件处理类的对象ll
   // jb3.addActionListener(ll);
   
    return jp4;
 }
 
}

/***************定义登陆按钮监听器************************/

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
//import javax.swing.JComponent;

public class ButtonAction implements ActionListener {
    public JFrame jf;
 private JComboBox combo;
 private JPasswordField pass;
 public QQlogin lo;
   
// public ButtonAction(JFrame jf){
//  this.jf=jf;
// }
 public ButtonAction(JComboBox combo,JPasswordField pass,JFrame jf){
  this.combo = combo;
  this.pass = pass;
  this.jf=jf;
 }

 @Override
 public void actionPerformed( ActionEvent e) {
 System.out.println("你点击了"+e.getActionCommand()+"按钮");
  //获取账号,密码信息
  String name = (String)combo.getSelectedItem();
  String passworld = new String(pass.getPassword());

  //判断账号密码是否一致;
     if(name.equals("912332548")&&passworld.equals("1234")){
   //Window jf = null;
   jf.dispose();
      //实例化一个简单界面
      JFrame jf1 = new JFrame();
      jf1.setSize(300,500);
      jf1.setTitle("扣扣扣鼻屎");
      jf1.setResizable(true);
            jf1.setDefaultCloseOperation(3);
      jf1.setLocationRelativeTo(null);
      jf1.dispose();
      jf1.setVisible(true);
      
     }
     
     else{
      //账号密码不一致
      //弹出一个消息提醒窗口
      JOptionPane.showMessageDialog(null, "你输入的账号和密码不符,请重新输入");
      
     }     
  
 }

}

你可能感兴趣的:(qq)