今天学习了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 } }