实现Swing ActionListener接口

开发 后端
本文介绍实现Swing ActionListener接口,以及介绍在addActionListener的参数中新定义到一个ActionListenner并重写它的actionPerformed。

关于ActionListener的响应问题,就我的理解可以有两种方法。第一种就是你放到一个新的类里面,实现Swing ActionListener接口,然后写好public void actionPerformed(ActionEvent e)的方法。这种当继承自JFrame还是蛮有用的,但是如果是一个在public static void main(String[] args)中建立一个JFrame,然后对里面的(比如按钮)实现监听,那么去实现Swing ActionListener接口就不那么合适了(哎,很多都是当你做过后才知道什么是合适的),不过Java提供了另一种解决方案:

  1. import java.awt.*;  
  2. import javax.swing.*;  
  3. import java.awt.event.*;  
  4.  
  5. public class ActionListenerTest ...{  
  6. public static void main(String[] args) ...{  
  7.    JFrame frame = new JFrame("Button Test");  
  8.    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  9.     
  10.    final JButton jbClose = new JButton("Close the Frame");  
  11.    jbClose.addActionListener(new ActionListener () ...{  
  12.     public void actionPerformed(ActionEvent e) ...{  
  13.      if (e.getSource().equals(jbClose)) ...{  
  14.       System.exit(0);  
  15.      }  
  16.     }  
  17.    }  
  18.    );  
  19.     
  20.    frame.add(jbClose);  
  21.    frame.pack();  
  22.    frame.setVisible(true);  
  23.   }  

也就是在addActionListener的参数中新定义到一个ActionListenner并重写它的actionPerformed。不过要注意的是,这个actionPerformed一定要是public的,不然权限不够。还有就是里面用到的组件在外部必须声明为final的,这点也许会造成些许使用的限制。

另一种其实是很常用的那种,前面也用到过,不过这里再写一遍好了,翻来翻去很麻烦的。

  1. import java.awt.*;  
  2. import javax.swing.*;  
  3. import java.awt.event.*;  
  4. public class ButtonFrame extends JFrame implements ActionListener ...{  
  5. JButton jbClose = null;  
  6. public ButtonFrame() ...{  
  7.    super("ButtonFrame Test");  
  8.    jbClose = new JButton ("Close the Frame in ButtonFrame");  
  9.    jbClose.addActionListener(this);  
  10.    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  11.     
  12.    this.add(jbClose);  
  13.    this.pack();  
  14.    this.setVisible(true);  
  15.   }  
  16.    
  17.   public void actionPerformed(ActionEvent e) ...{  
  18.    if (e.getSource().equals(jbClose)) ...{  
  19.     System.exit(0);  
  20.    }  
  21.   }  
  22.   public static void main(String[] args) ...{  
  23.    ButtonFrame bf = new ButtonFrame();  
  24.   }  

两个程序的效果是一样的,都是点击了按钮后就结束程序。 以上是介绍实现Swing ActionListener接口

【编辑推荐】

  1. Swing容器组件的显示效果
  2. 浅谈.Net与Java Swing相比
  3. 详解Swing组件相应外观
  4. Java Swing事件处理方法
  5. 浅谈Swing支持透明和不规则窗口
责任编辑:佚名 来源: 中国IT实验室
相关推荐

2009-07-17 17:16:44

Swing实现的目标

2009-07-16 10:26:49

渲染器接口Swing

2009-07-15 10:06:54

Swing实现MDI

2009-07-15 14:10:26

Swing控件

2009-07-15 15:35:59

Swing程序Swing性能

2009-07-16 08:53:03

Swing任务Swing线程

2009-07-16 16:01:55

EventQueue

2009-08-31 15:55:17

C#实现Strateg

2010-03-22 13:15:07

Python支付接口

2010-03-04 09:20:48

Android接口

2010-02-06 18:04:21

Android 接口

2021-05-14 07:45:07

Sentinel 接口限流

2009-08-25 17:55:52

C#实现Strateg

2009-07-14 18:28:58

Swing入门

2009-07-10 10:37:50

Swing Set示例

2009-07-15 09:06:07

BeanTableMoSwing

2009-07-10 13:36:32

Swing容器

2009-07-15 14:29:24

构造JListSwing

2009-07-15 13:06:38

Swing组件

2009-07-15 11:19:17

invokeLaterSwing
点赞
收藏

51CTO技术栈公众号