今天學習了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 } }