我有两个类gameWindowgameEngine。 Main方法在gameWindow类中,swing GUI代码也在其中。现在,我想访问gameEngine中的swing组件。怎么做?正常尝试时,我总是会收到cannot find symbol错误。我曾尝试将组件公开,但没有运气。

另外,我尝试创建gameWindow实例,但它也没有帮助。它编译时没有任何错误,但是我遇到了BIG运行时错误(我什至看不到,命令提示符滚动到它的极限)。

RELP!

附注:我认为在此处发布代码不会有帮助。

最佳答案

为了访问gameEngine中的gameWindow组件,您需要对其进行引用。因此,我假设GameWindow类创建GameEngine的实例。然后,您可以执行以下操作:

 public class GameEngine{
      GameWindow window;

      public GameEngine(GameWindow gm){
           window = gm;
      }
      //rest of your code
 }

 public class GameWindow(){

     //At the point where you create the GameEngine
     GameEngine ge = new GameEngine(this);
     //rest of your code


}

现在,GameEngine可以使用它对GameWindow的引用。

话虽如此,我建议您考虑使用其他设计。让GameEngine直接访问GameWindow听起来像是由错误的类负责处理错误的事情。也许您可以尝试使用某种Observer,以便GameWindow在GameEngine中查找更改,然后访问更新并相应地修改视图。因此,GameEngine不必访问GameWindow的swing组件。

09-28 11:27