服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

swing中的actionlistener响应研究


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

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响应研究(图五十九)}

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

扫描关注微信公众号