在操作事件java中初始化的访问类实例

时间:2014-08-03 02:04:22

标签: java swing class instances

我试图让一个类读取属于另一个类的一个实例的变量。正在读取的类仅在按下JButton时才会启动。从我的实验来看,我似乎无法访问任何类的变量(也许是因为编译器不确定第一类实际上会被启动?)

有没有人知道解决这个问题的方法?

抱歉模糊不清。

public class MainClass extends JComponent implements ActionListener{
   JButton button = new JButton("Run Program");
   MainClass INSTANCE = new MainClass()  // create an instance of the main class to refer to later
        constructor(){

        this.add(button);
        button.addActionEventListener(this);
        }

    actionPerformed(ActionEvent e){
    if(e.getSource == button){
     NextClass nextClass = new NextClass();  // class being read from
     FinalClass finalClass = new FinalClass(); // class doing the reading
    }



   public class NextClass{
   boolean state = true; // what is being read

    constructor(){}
   }



    public class FinalClass{
    constructor(){
    if(MainClass.INSTANCE.nextClass.state == true){do something...}
    }
    }

基本上,按下按钮时会创建nextClass和finalClass实例。在Final类中,我想检查NextClass类的nextClass实例中的状态变量。我似乎无法访问状态变量或下一个类中的任何其他变量或函数。我的假设是因为没有保证nextClass实际上会被启动?

2 个答案:

答案 0 :(得分:0)

您的MainClass INSTANCE对象没有nextClass字段。唯一的nextClass名称作为actionPerformed方法中的局部变量存在。为了做你想做的事情,我认为你只需要删除局部变量并使nextClass成为MainClass的字段。 (这有点难以辨别,因为您发布的代码比实际的Java更具伪代码。)

答案 1 :(得分:-1)

好的,我想我想出了怎么做。我无法在mainClass中初始化nextClass,因为它会先发制人地开始运行,并且只是声明它也没有做到这一点。

解决方案是为接受参数的下一个类创建一个新的构造函数。然而,构造函数是空的(没有方法可以调用或任何东西)。这样我就可以初始化nextClass而不会让它先发制人地运行它的方法。