1

事件处理机制
什么是事件?
对对象所做的一-组动作称为事件。
在GUI程序运行中,通过鼠标、键盘与GUI界面直接或间接交星都会生成事件。如: 按下一一个按钮、通过键盘输入一一个字符、选择列表框中的一项、点击- - 下鼠标等。。当事件发生后,系统会通知我们去处理这些事件。对这些事件做出相应处理的程序,称为事件处理器。
事件处理机制中,涉及到三个对象:事件本身、事件的来源和事件处理器
事件
事件是事件类的一一个对象,事件类的根类是java. util. EventObject。通常所用到的事件类在java. awt. event包中。
事件对象的属性包含了与事件相关信息。。如可以使用Event0b ject类中的ge tSource ()方法获得事件源。
在这里插入图片描述
在这里插入图片描述
事件源
事件源是产生事件的对象。
一个事件源可能会产生不同类型的事件。

事件监听器

事件监听器是在一个事件发生时被通知的对象,也称为事件处理器。

监听器对象属于一一个监听器类的实例,这个类实现了一个特殊的接口,称为“监听者接口。”

注册事件

事件源提供了一组方法,用于为事件注册一个或多个监听器对象,并向其发送事件对象。

每种不同的事件都有其自己的注册方法。一般形式为:

public voidladdListener (TypeListener e)

总结处理事件的具体方法

确认触发的事件,取得事件类(如ActionEvent)的名字,并删掉其中的“Event”字样,加上

“Listener"字样。这就是我们类需要实现的事件监听类接口。

实现上面的接口,针对想要捕获的事件编写方法代码。如想要捕获鼠标的移动,就要为

MouseMotionListener接口中的mouseMoved()方法编写代码( 当然还要实现其他- - -些方法)。

事件处理流程

第一种方法
package com.imua.gui;
import javax.swing.;
import java.awt.
;
public class Login extends JFrame implement ActionListtener{

private JLabel lname;
private JLabel lpass;
private JTextField tname;
private JTextField tpass;
//隐藏密码 privateJPasswordField tpass;

private JButton login;

Private void initEvent(){
Login.addActionListtener(this);
}

private void init() {
lname=new JLabel(“用户名”);
lpass=new JLabel(“密 码”);
tname=new JTextField(14);
tpass=new JPasswordField(14);
login=new JButton(“登录”);

this.setLayout(new FlowLayout(FlowLayout.CENTER));
this.add(lname);
this.add(tname);
this.add(lpass);
this.add(tpass);
this.add(login);

//1.获取屏幕大小
//2.设置为大小
Dimension dim=getToolkit().getScreenSize();

int w=dim.width/2;
int h=dim.height/2;

this.setResizable(false);
this.setTitle(“QQ登录”);
this.setSize(255, 125);
this.setLocation(w-255/4, h-125/4);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public Login() {
init();
}
//处理器方法
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

System.out.println(“单击了按钮…”+tname.getText()+”,”+tpass.etText()”,”+e.getSource());

//返回private JButton login;
}

}
第二种形式

package com.imua.gui;

import javax.swing.;
import java.awt.
;
public class Login extends JFrame{

private JLabel lname;
private JLabel lpass;
private JTextField tname;
private JTextField tpass;
//隐藏密码 privateJPasswordField tpass;

private JButton login;

Private void initEvent(){
Login.addActionListtener( new ActionListtener());{

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println(“单击了按钮…”+tname.getText()+”,”+tpass.etText()”,”+e.getSource());

                       }

        }

}

private void init() {
lname=new JLabel(“用户名”);
lpass=new JLabel(“密 码”);
tname=new JTextField(14);
tpass=new JPasswordField(14);
login=new JButton(“登录”);

this.setLayout(new FlowLayout(FlowLayout.CENTER));
this.add(lname);
this.add(tname);
this.add(lpass);
this.add(tpass);
this.add(login);

//1.获取屏幕大小
//2.设置为大小
Dimension dim=getToolkit().getScreenSize();

int w=dim.width/2;
int h=dim.height/2;

this.setResizable(false);
this.setTitle(“QQ登录”);
this.setSize(255, 125);
this.setLocation(w-255/4, h-125/4);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public Login() {
init();
}

}
package com.imua.gui;

import javax.swing.;
import java.awt.
;
public class Login extends JFrame{

private JLabel lname;
private JLabel lpass;
private JTextField tname;
private JTextField tpass;
//隐藏密码 privateJPasswordField tpass;

private JButton login;

Private void initEvent(){
Login.addActionListtener( new ActionListtener());{

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println(“单击了按钮…”+tname.getText()+”,”+tpass.etText()”,”+e.getSource());

                       }

        }

}

private void init() {
lname=new JLabel(“用户名”);
lpass=new JLabel(“密 码”);
tname=new JTextField(14);
tpass=new JPasswordField(14);
login=new JButton(“登录”);

this.setLayout(new FlowLayout(FlowLayout.CENTER));
this.add(lname);
this.add(tname);
this.add(lpass);
this.add(tpass);
this.add(login);

//1.获取屏幕大小
//2.设置为大小
Dimension dim=getToolkit().getScreenSize();

int w=dim.width/2;
int h=dim.height/2;

this.setResizable(false);
this.setTitle(“QQ登录”);
this.setSize(255, 125);
this.setLocation(w-255/4, h-125/4);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public Login() {
init();
}

}

第三种形式(最常用)

package com.imua.gui;

import javax.swing.;
import java.awt.
;
public class Login extends JFrame {

private JLabel lname;
private JLabel lpass;
private JTextField tname;

private JTextField tpass;
//隐藏密码 private JPasswordField tpass;
private JButton login;

Private void initEvent(){
Login.addActionListtener( new MyListener() );{

                 }

}

private void init() {
lname=new JLabel(“用户名”);
lpass=new JLabel(“密 码”);
tname=new JTextField(14);
tpass=new JPasswordField(14);
login=new JButton(“登录”);

this.setLayout(new FlowLayout(FlowLayout.CENTER));
this.add(lname);
this.add(tname);
this.add(lpass);
this.add(tpass);
this.add(login);

//1.获取屏幕大小
//2.设置为大小
Dimension dim=getToolkit().getScreenSize();

int w=dim.width/2;
int h=dim.height/2;

this.setResizable(false);
this.setTitle(“QQ登录”);
this.setSize(255, 125);
this.setLocation(w-255/4, h-125/4);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public Login() {
init();
}

Class MyListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println(“单击了按钮…”+tname.getText()+”,”+tpass.etText()”,”+e.getSource());

   }

 }

}
package ccm. imau. gui ;

Import java.awt. *;

import javax. swing. *;

import java. awt .event.*;

public class EvtentDemo extends JFrame {
Private JTextField tf;
Private viod initEvent(){
Tf.addFoucusListener( new MyListener());
}
Public EvtentDemo(){
Init();
}

private void init() {
Tf=new JTextField (10);
This.add(tf);

this.setLayout(new FlowLayout(FlowLayout.CENTER));

initEvent();
//1.获取屏幕大小
//2.设置为大小
Dimension dim=getToolkit().getScreenSize();

int w=dim.width/2;
int h=dim.height/2;

this.setResizable(false);
this.setTitle(“事件案例”);
this.setSize(500,300);
this.setLocation(w-500/4, h-300/4);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

Class MyListener implements FouceListener{

@Override

public void focusGained //获取焦点(FocusEvent e) {

}

@Override

public void focusLost //失去焦点 (FocusEvent e) {

 //getComponent()  获取当前组件对象
 //requestFocus()   从新获取焦点
  1.System.out.println(“bb”+e.getComponent()==tf);
  2.System.out.println(“bb”)
  Tf.requestFocus();

If (tf.getText().lengtf()<=8)
System.out.println(“密码必须大于8位”);
if.requestFocus();

           }

}
package ccm. imau. gui ;

Import java.awt. *;

import javax. swing. *;

import java. awt .event.*;

public class EvtentDemo extends JFrame {
Private JTextField tf;
Private viod initEvent(){
Tf.addFoucusListener( new MyListener());
}
Public EvtentDemo(){
Init();
}

private void init() {
Tf=new JTextField (10);
This.add(tf);

this.setLayout(new FlowLayout(FlowLayout.CENTER));

initEvent();
//1.获取屏幕大小
//2.设置为大小
Dimension dim=getToolkit().getScreenSize();

int w=dim.width/2;
int h=dim.height/2;

this.setResizable(false);
this.setTitle(“事件案例”);
this.setSize(500,300);
this.setLocation(w-500/4, h-300/4);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

Class MyListener implements FouceListener{

@Override

public void focusGained //获取焦点(FocusEvent e) {

}

@Override

public void focusLost //失去焦点 (FocusEvent e) {

 //getComponent()  获取当前组件对象
 //requestFocus()   从新获取焦点
  1.System.out.println(“bb”+e.getComponent()==tf);
  2.System.out.println(“bb”)
  Tf.requestFocus();

If (tf.getText().lengtf()<=8)
System.out.println(“密码必须大于8位”);
if.requestFocus();

           }

}

窗口事件

当一个窗口被激活、禁止、关闭、正在关闭、最小化、恢复、打开时将生成窗口事件。

需要实现的方法如下:

windowActivated、, windowClosed

windowClosing、windowDeact ivated
windowDeiconified、windowIconified
indowOpened

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值