日期:2014-05-20  浏览次数:20766 次

高人前辈们请进来指点下一道JAVA的代码修改
import   java.awt.*;
import   java.applet.*;
import   java.awt.event.*;   //java.awt中的事件处理必须使用该包

public   class   TryText1   extends   Applet   {
  TextField   name   =   new   TextField(30);
  TextField   pw   =   new   TextField(30);
  TextField   pw1   =   new   TextField(30);
  Label   la1   =   new   Label();
  Label   la2   =   new   Label();
  Label   la3   =   new   Label();

class   pwHandle   implements   ActionListener   {
//事件监听者对应的类必须实现事件接口
//定义pwHandle类监听pw文本域的动作事件,此处理即为按下回车这一动作
  public   void   actionPerformed(ActionEvent   e){
    pw1.setText(pw.getText(   ));
//在pw文本域中输入回车引发动作事件
//处理结果为:将pw中输入的内容显示在pw1中
    }
}

class   nameHandle   implements   ActionListener   {
//定义nameHandle类监听文本域name的动作事件,此处理为按下回车这一动作
  public   void   actionPerformed(ActionEvent   e)   {
  name.setText( "i   know "   +   name.getText());
//在name文本域中输入回车引发动作事件,处理结果为:将name文本域中的内容
//改为i   know   +   文本域name中输入的字符串
    }
}

public   void   init()   {
  this.setLayout(new   FlowLayout());
  la1.setText( "       name: ");
  this.add(la1);
  this.add(name);
  name.addActionListener(new   nameHandle());
//设置name的监听者为nameHandle类对象
  la2.setText( "       password: ");
  this.add(la2);
  pw.setEchoChar( '* ');
  this.add(pw);
  pw.addActionListener(new   pwHandle());
//设置pw的监听者为pwHandle类对象
  la3.setText( "show   password: ");
  this.add(la3);
  this.add(pw1);
}
}

请前辈学长们指点上面的代码如何修改才能使监听者的设置及处理都放在addActionListener的参数列表中,还有就是转换文档该怎么写,万分感谢咯!!!


------解决方案--------------------
事件监听, 在处理器中一般都要引用到窗口里的一些组件

可以让事件监听处理作为内部类, 或者在构造函数中传入组件
------解决方案--------------------
拿TextField举个例子吧,别的也一样
pw.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//操作
}
});
这就是匿名内部类,其实这是一种可读性不强的语法,看时要明白写的过程,其实是这样写的:
pw.addActionListener();//括号中要传一个ActionListener接口的对象
pw.addActionListener(new ActionListener());//但是ActionListener是一个接口,不能直接
//new对象,要有一个类去实现它
//直接在括号后写一对花括号,就表明实现它
//再在中间写出实现代码就可以了
所以就成了这样的形式:
pw.addActionListener(new ActionListener(){
public void ...
...
});