【问题标题】:Access class instance that is initialised in action event java在动作事件java中初始化的访问类实例
【发布时间】:2014-08-03 02:04:22
【问题描述】:

我试图让一个类读取属于另一个类的一个实例的变量。仅在按下 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 会真正启动?

【问题讨论】:

  • 你能再澄清一点吗
  • 显示您的问题的完整(如果最小)代码示例可能有助于澄清问题。事实上,这个问题太模糊了,我无法理解。请编辑您的问题,而不是尝试在 cmets 中发布代码示例。
  • 把你的代码放到帖子里
  • 代码很长。我给出了一个我正在尝试做的简明场景
  • "sorry about the vagueness" -- 与其道歉,不如澄清。

标签: java swing class instances


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    好的,我想我知道该怎么做了。我无法在 mainClass 中初始化 nextClass,因为它会先发制人地开始运行,并且简单地声明它也没有起到作用。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多