动作监听器和内部类java

时间:2016-05-16 16:44:27

标签: java

所以我在public static void main中有一个嵌套类。它似乎编译并且是正确的,但它应该执行的功能似乎没有执行。这是方法。

public static void main(String[]args)
{

  LevelOne l = new LevelOne();
  //Level Two not made yet just a place holder to show constructor with a different type
  LevelTwo l2 = new LevelTwo();
  //I make l2 first because the front frame is the last one created
  Main m = new Main(l2);
  Main m2 = new Main(l);
  //To switch levels i am going to load them all in advance and then when the beat the level it will close the frame

  class ChoiceListener implements ActionListener
  {
      Timer tm = new Timer(5, this);
      //timer is used for the actionlistener
      public void actionPerformed(ActionEvent e) 
   {
    if(l.checkWin())
   {
     m2.setVisible(false);
     m2.dispose();
    }
   }

    }

  }

这是它应该在另一个类中访问表单级别l的变量。

public void setWin()
{
   this.checkWin = true;  
}

public boolean checkWin()
{
  return this.checkWin;  
} 

checkWin是另一个类的私有实例字段。出于某种原因,当checkWin设置为true时,它仍然不会执行。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

在主方法

中添加以下行
Timer tm = new Timer(5, new ChoiceListener());
tm.start();

并删除

Timer tm = new Timer(5, this);

来自ChoiceListener。同样将ChoiceListener移出类中的main方法,以便可以使用类实例对其进行实例化,或者将其设置为静态,以便可以直接实例化。