1 .事件其实无处不在,每个人不管是在干什么,都是事件,在类里面就是对象的行为就是事件,按钮的触发,窗体的点击、关闭,等等
2 .监听器顾名思义就是来监听别人的一举一动的,当然在类里面它就是来监听与对象相对应的动作事件的,监听器记录指定对象的任何异动,但达到某一条件时就会触发事件,这个事件的发生是自动的,不需要再操作,我们的工作就是把它按在所需要监控的对象上
JButton login_button = new JButton(“登陆”);
login_button.addActionListener(new ActionListener(){实现方法;});
3.上面的监听器是系统提供的,往往不能满足需要,所以一般我们会自己重新构造一个监听器类,由于要能够实现监听器的方法,一般会想到去继承,但一般系统提供的都是借口,所以需要实现(不是继承)系统提供的监听器:
public class MyButtonListener implements ActionListener {
//由于是借口所以子类必须实现接口中的方法
public void actionPerformed(ActionEvent e) {实现方法;}
}
4.完成以上步骤后就可以做一个简单的事件触发机制了
示例:
////////////////////////////////////////////////////////////////////////////
public class JFrameTest {
public static void main(String[] args) {
JFrameTest Test = new JFrameTest();
Test.showFrame();
}
public void showFrame(){
JFrame frame = new JFrame("内部类事件处理机制");//窗口
FlowLayout fl = new FlowLayout();//布局
frame.setLayout(fl);
la_name = new JLabel();//名字标签
la_name.setText("名字:");
jta_name = new JTextField(20);//设置标签区域
jta_name.setText("larch");
JLabel la_password = new JLabel();//密码标签
la_password.setText("密码:");
JPasswordField jp_name =new JPasswordField("larch", 20);//密码区域
JButton bu_login = new JButton();//登陆按钮
bu_login.setText("登录");
bu_login.addActionListener(new ActionListener() {//时间处理器
@Override
public void actionPerformed(ActionEvent e) {//默认事件函数
// TODO Auto-generated method stub
ProcessEvent();//事件处理函数声明
}
});
frame.add(la_name);//加入名字标签
frame.add(jta_name);//加入名字区域
frame.add(la_password);//加入密码标签
frame.add(jp_name);//加入密码区域
frame.add(bu_login);//加入按钮
frame.setSize(300,500);//设置大小
frame.setDefaultCloseOperation(3);//设置退出方式
frame.setVisible(true);//设置可见性
}
private void ProcessEvent(){
String s = jta_name.getText();//获得名字区域内容
la_name.setText(s);//重新设置明知标签内容
jta_name.setText("");//清空名字区域内容
}
private JLabel la_name;
private JTextField jta_name;
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
public class MyButtonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JOptionPane.showMessageDialog(null, "larch 你好!!");
Object sour = e.getSource();
if(sour instanceof JButton){
JButton bu = (JButton)sour;
String lab = bu.getText();
System.out.println("按下这个按钮"+lab);
}
else{
System.out.println("其他组建发出的事件");
}
}
}