类中的变量声明

[code="java"]public class myFrame extends JFrame{
JButton bt; //这里变量声明放在构造方法的外面有什么好处?
public test(String title){
super(title);

bt=new JButton("按钮");
...................

}
}[/code]

说几句不好听的,希望楼主能听进去

  1. 楼主的java基础非常糟糕。完全没有类和对象的概念。

  2. 楼主的myFrame是一个类(这里先不谈命名不规范的问题,规范的命名应该是MyFrame),这个类的构造方法必须和类名相同,即:
    public myFrame(...)
    而楼主写成了
    public test(...)

  3. 一个类可以生成很多对象,每个对象会有自己的“成员变量”(在java中叫做“域”)。比如:
    MyFrame f = new MyFrame(...);
    f.bt表示的就是f这个对象中的一个成员变量bt

  4. 在任何函数(方法)内声明的变量叫做“局部变量”,这个变量在这个方法被调用时生成,方法结束后就会自动消失。即,如果你在构造函数里声明了一个变量,这个变量只是临时的。当构造完成后就消失了(当然对象不一定消失)。所以你的对象并不会有这么一个成员变量。你无法引用它(无法更改这个东西的状态)。

[size=x-large][color=red]首先,你要从成员变量的局部性与类的成员变量的角度来考虑问题.局部变量在它的有效范围外,就不存在了.而类的成员变量,只要得到这个类的对象,你就有办法得到这个对象的成员变量.(这里我们忽略类的静态变量的情况).
其次,根据你的需要,把变量是否做为类的成员变量.
最后,在SWING开发中,通常我们在ActionListener中,传进去的是Frame,这时,把Frame里的控件对象放在Frame里做为成员变量时,ActionListener可根据Frame就可以找到Frame里的控件对象.如果你把这些控件放到Frame的构造方法里,这些对象在构造方法运行完后,你根本无法得到...

希望对你有所帮助..[/color][/size]