如何从其他程序实例更新Swing GUI

时间:2013-02-27 14:55:09

标签: java swing

我正在做一个董事会策略游戏。事情是,我做了之前的房间聊天,其中连接的玩家可以使用comboBox(类似帝国时代2)选择他的颜色并直到主持人开始游戏。

问题是我不知道如何更新其他玩家的GUI以显示玩家X选择了红色。

我已经将游戏的创建者(主机)与客户端连接起来,我可以通过控制台相互发送消息。但我真的不知道如何在从简单的组合框更改后更新两个GUI。

如果玩家2将其颜色设置为绿色

然后它必须在其他玩家GUI中显示绿色,但我不知道该怎么做。

3 个答案:

答案 0 :(得分:1)

你必须为组合框添加一个监听器。监听器应该向主机发送特殊消息(命令)以及颜色(类似“playerColorChanged#00ff00”),并且主机必须将其分发给所有其他客户端(另外附加源播放器名称/ ID)。客户端必须相应地更新其GUI。

我不知道您的代码,但可能必须更新客户端和主机之间的当前通信协议才能发送此类“系统消息”。

答案 1 :(得分:1)

您可以尝试实施Observer design pattern

答案 2 :(得分:0)

根据您的客户端/服务器协议的编写方式,您应该有一些方法来发送不同的消息类型。让每个客户端向服务器发送特定的消息类型,宣布玩家选择颜色然后转发给所有其他客户端。每个客户端在收到该消息后,都会更改相关的UI指示符。

(该方法可以与点对点协议类似。)