使一个组件具有事件处理能力大致可以分为如下三步:
  1、public class MyClass implements ActionListener {} 2、someComponent.addActionListener(instanceOfMyClass); 3、public void actionPerformed(ActionEvent e) {        ...//事件执行代码    }
  先是一个简单的例子(还真是简单,但偏偏又来了个Applet,SUN真变态)
 
  
import java.applet.Applet; 
import java.awt.Button; 
import java.awt.Toolkit; 
import java.awt.BorderLayout; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
  
public class Beeper extends Applet implements ActionListener { 
    Button button; 
  
    public void init() { 
        setLayout(new BorderLayout()); 
        button = new Button("Click Me"); 
        add("Center", button); 
  
        button.addActionListener(this); 
    } 
  
    public void actionPerformed(ActionEvent e) { 
        Toolkit.getDefaultToolkit().beep(); 
    } 
} 
这里的Beeper首先实现了ActionListener,在方法 actionPerformed 中它进行响铃。 所以它能注册成为button的ActionListener。
  接下来是一个复杂点的例子了。
  import java.applet.Applet; 
import java.awt.*; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 
  
public class MultiListener extends Applet implements ActionListener { 
  
    TextArea topTextArea; 
    TextArea bottomTextArea; 
    Button button1, button2; 
  
    public void init() { 
       Label l = null; 
        GridBagLayout gridbag = new GridBagLayout(); 
        GridBagConstraints c = new GridBagConstraints(); 
        setLayout(gridbag); 
  
        c.fill = GridBagConstraints.BOTH; 
        c.gridwidth = GridBagConstraints.REMAINDER; 
       l = new Label("What MultiListener hears:"); 
        gridbag.setConstraints(l, c); 
        add(l); 
  
        c.weighty = 1.0; 
        topTextArea = new TextArea(5, 20); 
        topTextArea.setEditable(false); 
        gridbag.setConstraints(topTextArea, c); 
        add(topTextArea); 
  
        c.weightx = 0.0; 
        c.weighty = 0.0; 
       l = new Label("What Eavesdropper hears:"); 
        gridbag.setConstraints(l, c); 
        add(l); 
  
        c.weighty = 1.0; 
        bottomTextArea = new TextArea(5, 20); 
        bottomTextArea.setEditable(false); 
        gridbag.setConstraints(bottomTextArea, c); 
        add(bottomTextArea); 
  
        c.weightx = 1.0; 
        c.weighty = 0.0; 
        c.gridwidth = 1; 
        c.insets = new Insets(10, 10, 0, 10); 
        button1 = new Button("Blah blah blah"); 
        gridbag.setConstraints(button1, c); 
        add(button1); 
  
        c.gridwidth = GridBagConstraints.REMAINDER; 
        button2 = new Button("You don't say!"); 
        gridbag.setConstraints(button2, c); 
        add(button2); 
  
        button1.addActionListener(this); 
        button2.addActionListener(this); 
  
        button2.addActionListener(new Eavesdropper(bottomTextArea)); 
    } 
  
    public void actionPerformed(ActionEvent e) { 
        topTextArea.append(e.getActionCommand() + "\n"); 
    } 
} 
  
class Eavesdropper implements ActionListener { 
    TextArea myTextArea; 
    public Eavesdropper(TextArea ta) { 
        myTextArea = ta; 
    } 
  
    public void actionPerformed(ActionEvent e) { 
        myTextArea.append(e.getActionCommand() + "\n"); 
    } 
}
 
  在这里先是使用了一个复杂的布局管理器,真BT,把简单问题复杂化。然后给 button1 和 button2 分别加上了实现 ActionListener 的自身。并且动过 e.getActionCommand() 来获取命令文本,这里当然就是按钮上的文本了。并把该文本赋给了位于顶层的 TextArea ,然后又给 button2 注册了一个实现 ActionListener 接口的 Eavesdropper,并给他的构造函数传递了一个保存了下边的 TextArea 对象,并使用该对象来获取事件源的文本。总体来说这个例子还是可以的,就是开始复杂了些。
  最后是一个鼠标事件的例子,比较简单,不罗嗦。^_^
 
  
import java.awt.*; 
  
public class BlankArea extends Canvas { 
    Dimension minSize = new Dimension(100, 100); 
  
    public BlankArea(Color color) { 
        setBackground(color); 
    } 
  
    public Dimension getMinimumSize() { 
        return minSize; 
    } 
  
    public Dimension getPreferredSize() { 
        return minSize; 
    } 
  
    public void paint(Graphics g) { 
        Dimension size = getSize(); 
        g.drawRect(0, 0, size.width - 1, size.height - 1); 
    } 
} 
 
  
 
import java.applet.Applet; 
import java.awt.*; 
import java.awt.event.MouseListener; 
import java.awt.event.MouseEvent; 
  
public class MouseEventDemo extends Applet implements MouseListener { 
    BlankArea blankArea; 
    TextArea textArea; 
    static final int maxInt = java.lang.Integer.MAX_VALUE; 
    String newline; 
  
    public void init() { 
        GridBagLayout gridbag = new GridBagLayout(); 
        GridBagConstraints c = new GridBagConstraints(); 
        setLayout(gridbag); 
  
        c.fill = GridBagConstraints.BOTH; 
        c.gridwidth = GridBagConstraints.REMAINDER; 
        c.weightx = 1.0; 
        c.weighty = 1.0; 
  
        c.insets = new Insets(1, 1, 1, 1); 
        blankArea = new BlankArea(new Color(0.98f, 0.97f, 0.85f)); 
        gridbag.setConstraints(blankArea, c); 
        add(blankArea); 
  
        c.insets = new Insets(0, 0, 0, 0); 
        textArea = new TextArea(5, 20); 
        textArea.setEditable(false); 
        gridbag.setConstraints(textArea, c); 
        add(textArea); 
  
        //Register for mouse events on blankArea and applet (panel). 
        blankArea.addMouseListener(this); 
        addMouseListener(this); 
  
        newline = System.getProperty("line.separator"); 
    } 
  
    public void mousePressed(MouseEvent e) { 
        saySomething("Mouse pressed; # of clicks: " + e.getClickCount(), e); 
    } 
  
    public void mouseReleased(MouseEvent e) { 
        saySomething("Mouse released; # of clicks: " + e.getClickCount(), e); 
    } 
  
    public void mouseEntered(MouseEvent e) { 
        saySomething("Mouse entered", e); 
    } 
  
    public void mouseExited(MouseEvent e) { 
        saySomething("Mouse exited", e); 
    } 
  
    public void mouseClicked(MouseEvent e) { 
        saySomething("Mouse clicked (# of clicks: " + e.getClickCount() + ")", e); 
    } 
  
    void saySomething(String eventDescription, MouseEvent e) { 
        textArea.append( 
           eventDescription 
               + " detected on " 
               + e.getComponent().getClass().getName() 
               + newline); 
        textArea.setCaretPosition(maxInt); //hack to scroll to bottom 
    } 
} 
 
  
 
  |