事件:
- 监听机制
比如:保镖保护富豪,富豪是事件源;保镖监听富豪的安全状况。保镖和富豪的协议称为注册。
- 事件开发步骤:
1.确定事件源,
2.确定监听器
3.注册,建立事件源和监听器的联系。
public class MyJFrame extends JFrame implements ActionListener{
private Mytext nametxt = new Mytext("姓名",200 ,30 , this);//不能使用局部变量
public MyJFrame(){
MyButton m = new MyButton(50,30,"提交",this);
this.add(m);
//方法1,在其他类注册一个事件,该事件的触发行为在MyEvent中的perform中被定义
m.addActionListener(new MyEvent());
//方法2,在本类写一个事件,不适合多个事件
MyButton m1 = new MyButton(50,60,"确定",this);
m1.addActionListener(this);
//方法3,
MyButton m3 = new MyButton(50,90,"添加",this);
m3.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
System.out.println("第三种方法,匿名内部类,也是匿名实现类");
String txt = nametxt.getText();
System.out.println(txt);
}});
this.setTitle("事件");
this.setLayout(null);
this.setSize(400, 300);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(3);
this.setResizable(false);
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
MyJFrame jf = new MyJFrame();
}
public void actionPerformed(ActionEvent s){
System.out.println("方法2,在本类写一个perform方法,不适合多个事件");
}
}
- 事件不能访问局部变量,所以不能在构造方法里声明一个含修饰符的变量
- 事件里面,可以直接在外部声明一个number来控制事件的发生次数
- 内部类访问外部类对象:外部类名.this.方法
mb.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
String strnametxt = nametxt.getText();
String strpwdtxt = pwdtxt.getText();
if("456".equals(strnametxt)&&"123".equals(strpwdtxt)){
JOptionPane.showMessageDialog(null, "登陆成功");
Mylogin.this.dispose();//匿名内部类调用外部类不能直接用this,要用外部类.this
new MyJFrame();