赛迪网 > IT技术 Java > 架构-与-模式
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

进阶:Swing中的ActionListener响应研究

发布时间:2007.11.29 04:59     来源:赛迪网    作者:baocl

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

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class ActionListenerTest ...{
public static void main(String[] args) ...{
   JFrame frame = new JFrame("Button Test");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
   final JButton jbClose = new JButton("Close the Frame");
   jbClose.addActionListener(new ActionListener () ...{
    public void actionPerformed(ActionEvent e) ...{
     if (e.getSource().equals(jbClose)) ...{
      System.exit(0);
     }
    }
   }
   );
  
   frame.add(jbClose);
   frame.pack();
   frame.setVisible(true);
  }
}

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

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

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ButtonFrame extends JFrame implements ActionListener ...{
JButton jbClose = null;
public ButtonFrame() ...{
   super("ButtonFrame Test");
   jbClose = new JButton ("Close the Frame in ButtonFrame");
   jbClose.addActionListener(this);
   this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
   this.add(jbClose);
   this.pack();
   this.setVisible(true);
  }
 
  public void actionPerformed(ActionEvent e) ...{
   if (e.getSource().equals(jbClose)) ...{
    System.exit(0);
   }
  }
  public static void main(String[] args) ...{
   ButtonFrame bf = new ButtonFrame();
  }
}

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


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 高手如何谈java编程中异常处理的优劣观 (11-28) · Java基础:泛型类型的子类及通配符的使用 (11-28)
· Java编程语言对象池技术的原理及其实现 (11-28) · 教你使用solr搭建你的全文检索 (11-28)
· Java编程中常用的加密算法MD5,SHA,RSA (11-28) · 进阶:Java Reflection (JAVA反射)详解 (11-28)
· Java中消除实现继承和面向接口的编程 (11-28) · JAVA基础:JAVA代码编写过程的30条建议 (11-28)
· 想成为JAVA高手么,给你几个实用的方法 (11-27) · Eclipse基础--plugin插件安装 (11-27)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 移动信息化市场方兴未艾 企业呼唤标准出台
· 如何把握企业价值差异 避免CRM与SCM脱节
· 齐看四大厂商的SaaS动态 ERP案例分析
· 通方期货CRM解决方案 方正电子公文系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统