我有两个班级gameWindow
和gameEngine
。 Main方法在gameWindow
class& swing代码也是如此。现在,我想访问gameEngine
中的swing组件。怎么做?我正常尝试时总是遇到cannot find symbol
错误。我已经尝试将组件公开但没有运气。
另外,我尝试创建gameWindow
的实例,但它也没有帮助。它编译没有任何错误,但我得到了一个大的运行时错误(我甚至看不到,命令提示符滚动到它的限制)。
RELP !!
P.S。:我不认为在这里发布代码会有所帮助。
答案 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,帖子说这是错误的。我建议将错误堆栈跟踪重定向到文件,读取它并解决运行时错误,然后按照他的说明进行操作。