- 豆豆staR
-
init 是 initialization 的缩写使用。
也就是设定初值,初始化的意思。
在方法调用中看到init开头的函数名称,大多也是指明该函数为初始化功能。
同net_wood的回答,需初始化。
- 苏州马小云
-
原因所在:
在main方法不可以直接进行"new okListener()"
==>查看内部类知识
解决方案:
方案一:将main方法中的移到一个类test中的新的方法
方案二:
init方法作用:
1.
可以直接使用内部类==>new okListener()
2.
public static void main(String args[]){
Frame f=new Frame("测试事件");
Button ok=new Button("确定");
finalTextField tf=new TextField(20);
ok.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("用户单击了ok按钮");
tf.setText("Hello Java");
}
});
f.add(tf);
f.add(ok,BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}
- 西柚不是西游
-
因为涉及到内部类的问题了,你把监听类写成了内部类,你在main函数中实例化了内部类,在外部类还没有实例化的前提下,是无法实例化内部类的,不能像你这样写,所以,要不你将监听类写成外部类,要不你就按照第一种方法,第一种方法先new了一个test对象出来,然后才在里面调用了init函数,new了一个内部类监听对象设置到了按钮上。
- 黑桃云
-
这个init函数只是加入监听器,初始化Frame的一些值.你可以写到class test的构造函数里去.后面你的写法本来就违反Java的规范,所以编译不过
- ardim
-
你的代码没有考虑到作用域的问题,
首先在static的main方法中是无法访问非static的okListener类,
其二,由于tf被声明在main方法中,属于局部变量,在actionPerformed中也无法被访问.
把okListener声明成static class,再将tf改为(static的)类成员变量就解决啦.
- Chen
-
public class test{
static TextField tf=new TextField(20);
static Button ok=new Button("确定");
public static void main(String args[]){
Frame f=new Frame("测试事件");
ok.addActionListener((new test()). new okListener());
f.add(tf);
f.add(ok,BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}
class okListener implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.println("用户单击了ok按钮");
tf.setText("Hello Java");
}
}
}
- 可可
-
初始化确定按钮,给确定按钮增加一个监听,
- 北有云溪
-
主要是初始化函数的。
- 里论外几
-
init方法作用:
1.可以直接使用内部类==>new okListener()
2.public static void main(String args[]){
Frame f=new Frame("测试事件");
Button ok=new Button("确定");
finalTextField tf=new TextField(20);
ok.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("用户单击了ok按钮");
tf.setText("Hello Java");
}
});
f.add(tf);
f.add(ok,BorderLayout.SOUTH);
f.pack();
f.setVisible(true);
}