高人前辈们请进来指点下一道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 ...
...
});