Java事件监听机制在GUI应用的比较多。我们会时常对界面进行一系列的操作,如文本框输入、添加删除按钮等等。当进行这些操作时,程序就会采取相应措施相应这些事件。

    一、 事件监听有三部分组成:事件源,事件,监听器

这里就不说具体的定义了,用一个例子来解释,如A.addActionListener(this);

 设置了一个按钮button,那么button为事件源,点击操作就是事件(ActionListener),那么想让这个点击操作产生的效果或下一步操作就要重写接口对应的方法,这里对应的方法时actionpreformed,这就是叫监听器。(多少有点绕)

   二、 现在说两个事件监听器actionlistener和mouselistener

1.同为接口,继承同一个父类EventListenr,用时需定义类实现接口。(相关的方法需要自己去查,例如actionlistener的是actionpreformed)

2.MouseListener:可用于鼠标的单击、按下、释放、进入、离开,可以用于界面、组件类

    ActionListener:用于组件上面,功能单一只能适用于几种简单的组件的单击事件;

3.事件监听器在Java.awt.event保中,有actionlistener、adjustmentlistener、containerlistener、mouselistener等等,需要啥自己去查;

三、事件监听机制的运作过程

 四、拿个例子讲一讲

(一)

class PoliceWindow extends JFrame implements ActionListener{
    JTextField titleText;
    JPasswordField passwordText; 
    PoliceWindow(){
       titleText=new JTextField(10);
       passwordText=new JPasswordField (10);
       passwordText.setEchoChar('*');
       titleText.addActionListener(this);
       passwordText.addActionListener(this);
  
public void actionPerformed(ActionEvent e){
       JTextField textSource=(JTextField)e.getSource(); 
       if(textSource==titleText)
           this.setTitle(titleText.getText());
       else if(textSource==passwordText){
           char c[]=passwordText.getPassword();
           titleText.setText(new String(c));
       }   
    }    

titleText.addActionListener(this);就是一个事件监听,大体讲过了,那么需要强调的是actionlistener用了后就要写相应的actionpreformed方法,参数类型固定的是actionevent ;

(二)

 no.addActionListener(new ActionListener(){

  
            public void actionPerformed(ActionEvent e) {
                if(bbb.a>=4|| bbb.exit>=13)
                    System.exit(0);
                if (a<999)
                    a--;
                label.setText(por[a]);
            }

        });

这是一个匿名内部类,他将需要的方法紧跟在了new ActionListener()之后。
(三)


button.setOnClickListener(new Mylistener());

private class Mylistener implements OnClickListener {

public void onClick(View v) {
 callPhone();
 }
 }

这是创建内部类定义点击事件
还有很多就不一一列举了。
  五、再讲一下mouselistener

no.addMouseListener(new MouseListener(){
            //鼠标点击
            public void mouseClicked(MouseEvent pro) {
            }

这个是一个鼠标监听,接口方法未写,可以发现确实对应方法是不同的,这个鼠标监听有很多方法可以同时写在里面,需要的自行添加。

六、这是我自己的进行大量查阅整理的一些心得,希望能帮到你,里面也有讲的不好的地方,可以帮我提出,里面确实有点绕,请耐心揣摩。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐