访问另一个类的Swing组件

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

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

RELP!

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

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

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

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

gameEngine:


gameWindow theMainWindow = null; 公共游戏引擎(gameWindow mainWindow) { theMainWindow = mainWindow; }

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