Swing中的ActionListener响应研究

发表于:2007-06-22来源:作者:点击数: 标签:
关于ActionListener的响应问题,就我的理解可以有两种方法。第一种就是你放到一个新的类里面,实现ActionListener接口,然后写好public void actionPerformed(ActionEvent e)的方法。这种当继承自JFrame还是蛮有用的,但是如果是一个在public static void ma

   


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

clearcase/" target="_blank" >cccccc width="90%" align=center bgColor=#e7e9e9 border=1>
Swing中的ActionListener响应研究(图一)import java.awt.*;
Swing中的ActionListener响应研究(图二)import javax.swing.*;
Swing中的ActionListener响应研究(图三)import java.awt.event.*;
Swing中的ActionListener响应研究(图四)
Swing中的ActionListener响应研究(图五)Swing中的ActionListener响应研究(图六)public class ActionListenerTest ...{
Swing中的ActionListener响应研究(图七)Swing中的ActionListener响应研究(图八) public static void main(String[] args) ...{
  Swing中的ActionListener响应研究(图九) JFrame frame = new JFrame("Button Test");
  Swing中的ActionListener响应研究(图十) frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  Swing中的ActionListener响应研究(图十)
  Swing中的ActionListener响应研究(图十二) final JButton jbClose = new JButton("Close the Frame");
  Swing中的ActionListener响应研究(图十三)Swing中的ActionListener响应研究(图十四) jbClose.addActionListener(new ActionListener () ...{
   Swing中的ActionListener响应研究(图十五)Swing中的ActionListener响应研究(图十六) public void actionPerformed(ActionEvent e) ...{
    Swing中的ActionListener响应研究(图十七)Swing中的ActionListener响应研究(图十八) if (e.getSource().equals(jbClose)) ...{
     Swing中的ActionListener响应研究(图十九) System.exit(0);
    Swing中的ActionListener响应研究(图二十) }
   Swing中的ActionListener响应研究(图二十) }
  Swing中的ActionListener响应研究(图二十二) }
  Swing中的ActionListener响应研究(图二十三) );
  Swing中的ActionListener响应研究(图二十四)
  Swing中的ActionListener响应研究(图二十五) frame.add(jbClose);
  Swing中的ActionListener响应研究(图二十六) frame.pack();
  Swing中的ActionListener响应研究(图二十七) frame.setVisible(true);
 Swing中的ActionListener响应研究(图二十八) }
Swing中的ActionListener响应研究(图二十九)}

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

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

Swing中的ActionListener响应研究(图三十)import java.awt.*;
Swing中的ActionListener响应研究(图三十)import javax.swing.*;
Swing中的ActionListener响应研究(图三十二)import java.awt.event.*;
Swing中的ActionListener响应研究(图三十三)Swing中的ActionListener响应研究(图三十四)public class ButtonFrame extends JFrame implements ActionListener ...{
Swing中的ActionListener响应研究(图三十五) JButton jbClose = null;
Swing中的ActionListener响应研究(图三十六)Swing中的ActionListener响应研究(图三十七) public ButtonFrame() ...{
  Swing中的ActionListener响应研究(图三十八) super("ButtonFrame Test");
  Swing中的ActionListener响应研究(图三十九) jbClose = new JButton ("Close the Frame in ButtonFrame");
  Swing中的ActionListener响应研究(图四十) jbClose.addActionListener(this);
  Swing中的ActionListener响应研究(图四十) this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  Swing中的ActionListener响应研究(图四十二)
  Swing中的ActionListener响应研究(图四十三) this.add(jbClose);
  Swing中的ActionListener响应研究(图四十四) this.pack();
  Swing中的ActionListener响应研究(图四十五) this.setVisible(true);
 Swing中的ActionListener响应研究(图四十六) }
 Swing中的ActionListener响应研究(图四十七)
 Swing中的ActionListener响应研究(图四十八)Swing中的ActionListener响应研究(图四十九) public void actionPerformed(ActionEvent e) ...{
  Swing中的ActionListener响应研究(图五十)Swing中的ActionListener响应研究(图五十) if (e.getSource().equals(jbClose)) ...{
   Swing中的ActionListener响应研究(图五十二) System.exit(0);
  Swing中的ActionListener响应研究(图五十三) }
 Swing中的ActionListener响应研究(图五十四) }
 Swing中的ActionListener响应研究(图五十五)Swing中的ActionListener响应研究(图五十六) public static void main(String[] args) ...{
  Swing中的ActionListener响应研究(图五十七) ButtonFrame bf = new ButtonFrame();
 Swing中的ActionListener响应研究(图五十八) }
Swing中的ActionListener响应研究(图五十九)}

  两个程序的效果是一样的,都是点击了按钮后就结束程序。

原文转自:http://www.ltesting.net