编程笔记7

2018年7月24日星期二

今天在昨天的基础上继续,当用户输入正确的用户名和密码时候,则登陆成功。

编程笔记7_第1张图片

这里需要添加一个actionListener,当监听到按钮动作后,则进行判断。如果用户名和密码都符合要求,则login成功。

这里学习this的用法。this是什么呢?

this是指向当前对象的引用。为什么要用this呢?

在很多时候没有新建对象,但需要使用该类中的方法。但是方法必须要新建对象才能使用,这个时候java设计者,就产生了this。比如,在为创建对象前,使用this.setSize(200,300);等待对象新建的时候:Frame w=new JFrame(),才用w代替this。

java虽然是面向对象的语言,但是很多时候还是用了面向过程的方式。

在类中,有需要初始化的,可以放在构造函数中。

有些变量如果在整个类中使用,则需要定义成静态成员,并且放在方法之外使用。

代码如下:

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;


public class QQLogin{

public static void main(String args[]){

QQPanel w=new QQPanel();

w.setVisible(true);

}

}

class QQPanel extends JFrame implements ActionListener{

static JTextField txtUser=new JTextField();

static JPasswordField psd=new JPasswordField();

public QQPanel(){

System.out.println("ddd");

this.setSize(300,160);

//new component

JLabel lbUser=new JLabel("UserName:");

JLabel lbPsd=new JLabel("PassWord:");

JButton btnLogin=new JButton("Login");

JButton btnRegister=new JButton("Register");

JButton btnCancel=new JButton("Cancel");

//new pan1

JPanel pan1=new JPanel();

pan1.setLayout(new GridLayout(2,2));

//add component to the pan1

pan1.add(lbUser);

pan1.add(txtUser);

pan1.add(lbPsd);

pan1.add(psd);

//new pan2

JPanel pan2=new JPanel();

pan2.setLayout(new FlowLayout());

//add component to the pan2

pan2.add(btnLogin);

pan2.add(btnRegister);

pan2.add(btnCancel);

//register actionListener

btnLogin.addActionListener(this);

this.setLayout(new BorderLayout());

this.add(pan1,BorderLayout.CENTER);

this.add(pan2,BorderLayout.SOUTH);

}

public void actionPerformed(ActionEvent e){

if(e.getActionCommand().equals("Login")){

if(txtUser.getText().equals("aaa")&&psd.getText().equals("123")){

System.out.println("login");

this.setVisible(false);

}

}

}

}

另外,还有一个问题,什么是super?

super是指向父类对象的引用,而this是指向当前对象的引用。

为什么要有super呢?

比如,super.paint(),是调用父类的方法。

比如,在游戏中,英雄的角色,会有野兽,魔法师等,英雄是野兽的继承,如果英雄a=new野兽(),那么a.方法,会是使用英雄的方法还是野兽的呢?

如果过该方法在英雄中有,在野兽中也有,那么调用的是野兽的方法。这就展现了英雄的多态性。

注意,如果Father  p=new  Son();如果p.方法,该方法就是子类的方法,如果p.变量,那么调用的是父类的变量。

V�p

你可能感兴趣的:(编程笔记7)