访问另一个类的Swing组件

时间:2010-11-03 17:00:07

标签: java

我有两个班级gameWindowgameEngine。 Main方法在gameWindow class& swing代码也是如此。现在,我想访问gameEngine中的swing组件。怎么做?我正常尝试时总是遇到cannot find symbol错误。我已经尝试将组件公开但没有运气。

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

RELP !!

P.S。:我不认为在这里发布代码会有所帮助。

3 个答案:

答案 0 :(得分:2)

要在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组件。

答案 1 :(得分:1)

在构造函数中传递对gameEngine的引用或使用getter / setter类型方法。

例如,在gameWindow中,当你创建gameEngine类时,有一个带有gameWindow变量的构造函数。

gameEngine:


gameWindow theMainWindow = null; public gameEngine(gameWindow mainWindow) { theMainWindow = mainWindow; }

答案 2 :(得分:1)

Vincent的答案是正确的,但涉及实例化GameWindow,帖子说这是错误的。我建议将错误堆栈跟踪重定向到文件,读取它并解决运行时错误,然后按照他的说明进行操作。