Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16492747
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:48:55

下载本文示例代码
  关于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();  }}  两个程序的效果是一样的,都是点击了按钮后就结束程序。   关于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();  }}  两个程序的效果是一样的,都是点击了按钮后就结束程序。 下载本文示例代码


Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究Swing中的ActionListener响应研究
阅读(587) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~