JAVA事件監聽機制的實現

  今天學習了java的事件編程機制,略有體會,先在此記下心得。java

  第一,首先明確幾個概念。web

事件源:一個產生或者觸發事件的對象。
事件:承載事件源狀態改變時的信息對象。
事件監聽器接口:實際上就是一個類,該類實現了某個事件監聽器接口。編程

  具體來講,就是事件源狀態發生變化,好比說是發生點擊。事件源狀態發生變化後要將狀態變化經過「事件」這個載體,傳遞到相應的事件監聽接口進行處理(大概是這樣理解吧)。所以,爲了可以實現事件的監聽,有如下幾個步驟須要實現。ide

一個類實現事件監聽的步驟:佈局

一、實現相應的接口;
二、把接口的處理方法根據須要從新編寫;
三、在事件源註冊監聽。
 
  
 
  很關鍵一點是必定要記得註冊事件,這三個步驟缺一不可!
  如下附上今天的源代碼:
/*
 * 實現java事件監聽機制
 */
package com.listener;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;

public class Demo9_5 extends JFrame
{
       //定義組件
      JButton jb1 ,jb2 ;
      MyPanel jp1 ;
       public static void main(String[] args)
      {
            Demo9_5 demo9_5 = new Demo9_5();
            
      }
       public Demo9_5()
      {
             //建立組件  
             jb1 = new JButton( "黑色");
             jb2 = new JButton( "紅色");
             //添加組件
             jp1 = new MyPanel();
            
             this .setLayout( new GridLayout(3,1));       //設置佈局樣式
             this .add(jb1 );
             this .add(jp1 );
             this .add(jb2 );
            
             //註冊監聽!
             this .addMouseListener(jp1 );
            
            
             //顯示窗體
             this .setSize(400,300);
             this .setVisible( true);
             this .setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);
      }
}

class MyPanel extends JPanel implements MouseListener
{
       //畫出背景顏色
       public void paint(Graphics g)
      {
             super .paint(g);
             //獲取當前 mypanel的寬和高
             int w,h;
            w = this .getWidth();
            h = this .getHeight();
            g.fillRect(0, 0, w, h);
      }

       @Override
    public void mouseClicked(MouseEvent e)
    {
          // TODO Auto-generated method stub
          System. out .println("鼠標點擊了MyPanel" );
    }

       @Override
    public void mouseEntered(MouseEvent e)
    {
          // TODO Auto-generated method stub
            
    }

       @Override
    public void mouseExited(MouseEvent e)
    {
          // TODO Auto-generated method stub
         
    }

       @Override
    public void mousePressed(MouseEvent e)
    {
          // TODO Auto-generated method stub
         
    }

       @Override
    public void mouseReleased(MouseEvent e)
    {
          // TODO Auto-generated method stub
         
    }
}
相關文章
相關標籤/搜索