首页 > 代码库 > 按钮事件处理(3)

按钮事件处理(3)

  在进行gui编程时,我们最常使用的控件时按钮,在java中JButton类代表了按钮。它的类层次结构图是:

java.lang.Object
    |_ java.awt.Component
             |_java.awt.Container
                     |_javax.swing.JComponent
                              |_javax.swing.AbstractButton
                                       |_javax.swing.JButton
    

  我们使用按钮的目的不是为了好看,而是点击它,产生某些我们想要的结果,即事件处理。在c语言中,我们需要不断检查事件队列,然后依次处理。但是这种方式编写的程序可读性很差,在java中采用了事件监听器,它对每个需要控制的控件,都绑定一个监听器,绑定的监听器负责进行处理相关事宜。流程就是控件产生了事件,然后传递给了监听器,监听器接收到事件,然后进行处理。

  java将控件产生的事件的所有相关信息都封装到一个事件对象,这个事件对象都派生于java.util.EventObject,按钮对应的事件对象是ActionEvent。每个监听器都必须实现一个叫ActionListener的接口,实现其中的方法actionPerformed(ActionEvent e)。

  

public class test()
{
    public static void main(String[] args)
    {
          ... ...
          javax.swing.JButton button = new javax.swing.JButton();
          ... ...
          TestAction action = new TestAction();
          button.addActionListener(action);
     }

     class TestAction implements java.awt.event.ActionListener{
           public void actionPerformed(java.awt.event.ActionEvent e)
           {
                      Object obj = e.getSource();
                      if(obj == button)
                                test(e);
           }
     }

     void test(java.awt.event.ActionEvent event)
     {
                ... ...
     } 
}

  一个监听器可以同时被多个控件使用,除了上文的判断某个控件的方法之外,还可以使用setActionCommand(String name)方法将这个按钮产生的事件命名,然后在actionPerformed方法中使用e.getActionCommand().equals()方法判别。

按钮事件处理(3)