import java.awt.*;
import java.awt.event.*;
public class TestListener{
public static void main(String[] args){
Counter c1 = new Counter("Hello");
c1.CreatButton();
c1.add(c1.button); ----------------------------(1)
c1.setLocation(100,100);
c1.setSize(100,100);
c1.setVisible(true);
}
}
class Counter extends Frame{
public int count = 0;
**final Button button = new Button("0");--------(2)
Counter(String label){
super(label);
}
void CreatButton(){
**//final Button button = new Button("0");----------(3)
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
count = Integer.parseInt(button.getLabel());
button.setLabel(Integer.toString(++count));
}
});
}
}
像上述程序,目前是可以编译通过并运行的,如果我把(2)处的屏蔽掉,(3)处的用起来,那在(1)处应该如何写?
也就是题目中提到的如何调用方法中局部内部类的实例?请教各位~
不可以把,button不是局部变量嘛,怎么能够在外部调用呢
button 放在方法里面,但是方法里面并没有返回值,如果一定要这样的话方法可以这样写
public Button createButton(){
...
return new Button("0");
}
当然可以了
public Button createButton()
是return 一个指针( pointer ) 指着你的那个局部变量呢
1 处,c1.add(c1.createButton());