Accessing Swing components of another class
我有两个类
为了在gameEngine中访问gameWindow的组件,你需要一个对它的引用。所以我假设 GameWindow 类创建了 GameEngine 的实例。然后你可以做这样的事情:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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组件。
Vincent 的回答是正确的,但涉及实例化 GameWindow,帖子中说会出错。我建议将您的错误堆栈跟踪重定向到一个文件,阅读它并解决您的运行时错误,然后按照他的说明进行操作。
在构造函数中传递对 gameEngine 的引用或使用 getter/setter 类型的方法。
例如,在 gameWindow 中,当您创建 gameEngine 类时,有一个带有 gameWindow 变量的构造函数。
游戏引擎:
1 2 3 4 5 | gameWindow theMainWindow = null; public gameEngine(gameWindow mainWindow) { theMainWindow = mainWindow; } |