java - 访问另一个类的 Swing 组件

标签 java

我有两个类 gameWindowgameEngine。 Main 方法位于 gameWindow 类中,swing GUI 代码也是如此。现在,我想访问 gameEngine 中的 swing 组件。怎么做?当我正常尝试时,我总是遇到 cannot find symbol 错误。我试过公开这些组件,但没有成功。

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

求救!!

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

最佳答案

为了在 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 听起来好像错误的类对错误的事情负责。也许您可能会尝试使用某种观察者,以便 GameWindow 查找 GameEngine 中的更改,然后访问更新并相应地修改 View 。所以 GameEngine 不必访问 GameWindow 的 swing 组件。

关于java - 访问另一个类的 Swing 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4089532/

相关文章:

java - 锁定免费解决方案,同时从 map 中递增计数器,然后读取它

Java : Hang when socket used second time

java - http方法在servlet中如何工作?

Java 7 : Generic method to convert GET response to Generic Object

java - WSDL导入问题Delphi XE2

java - Spring:发布请求未到达 Controller 类

java - 更改窗口大小和 JLabel 的奇怪行为时如何更改字符串长度(以像素为单位计算其宽度)

java - 从 Amazon S3 下载文件之前,如何确保文件已使用 SSE-C 加密?

java - 从 JSON 字符串构建 Spring ResponseEntity 对象

javascript - Java Gradle 项目构建错误