关于java:访问另一个类的Swing组件 | 珊瑚贝

Accessing Swing components of another class


我有两个类 gameWindow 和 gameEngine。 Main 方法在 gameWindow 类中

  • 您能否向我们展示您实例化 GameWindow 的代码部分?


为了在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,帖子中说会出错。我建议将您的错误堆栈跟踪重定向到一个文件,阅读它并解决您的运行时错误,然后按照他的说明进行操作。

  • 我对传递引用一无所知,所以我只是通过 gameWindow instance1 = new gameWindow(); 实例化了 gameWindow 类。


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

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

游戏引擎:

1
2
3
4
5
gameWindow theMainWindow = null;
public gameEngine(gameWindow mainWindow)
{
    theMainWindow = mainWindow;
}


来源:https://www.codenong.com/4089532/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8710.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?