按钮事件处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按钮事件处理相关的知识,希望对你有一定的参考价值。

  在进行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()方法判别。

以上是关于按钮事件处理的主要内容,如果未能解决你的问题,请参考以下文章

C# 中 XBOX 控制器的事件处理程序?

响应Activity中的ViewPager2 Fragments事件

在片段中单击按钮播放声音(Kotlin)[重复]

如何区分两个“onpause”事件 - 由单击“暂停”按钮引起,以及由到达媒体片段末尾引起?

深入解析Android关机

在同一个片段中实现多个事件监听器 - Android