访问另一个类的Swing组件
我有两个类gameWindow
和gameEngine
。 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说这会给出错误。 我建议将错误堆栈跟踪重定向到文件,读取它并解决运行时错误,然后按照他的说明进行操作。