如何简单地用Java发送事件?

如何简单地用Java发送事件?,java,events,Java,Events,我正在用Java编写一个基本的井字游戏。 在我的Board类中,我有一个swing窗口,用于确定按下了哪个按钮。 TttGame是具有Board对象的类 该板的目标不是充当一个功能齐全的tic-tac-toe板,而是充当一个框架,其中TttGame类控制所有逻辑。因此,当按下按钮时,我需要电路板发送某种事件到TttGame类,其中包含已按下按钮的id 最简单的方法是什么 编辑:我发现了一种叫做观察者模式的东西-这是做这件事的最简单的方法吗?是的,观察者模式就是你想在这里应用的。创建一个监听器接口

我正在用Java编写一个基本的井字游戏。 在我的Board类中,我有一个swing窗口,用于确定按下了哪个按钮。 TttGame是具有Board对象的类

该板的目标不是充当一个功能齐全的tic-tac-toe板,而是充当一个框架,其中TttGame类控制所有逻辑。因此,当按下按钮时,我需要电路板发送某种事件到TttGame类,其中包含已按下按钮的id

最简单的方法是什么


编辑:我发现了一种叫做观察者模式的东西-这是做这件事的最简单的方法吗?

是的,观察者模式就是你想在这里应用的。创建一个监听器接口(
BoardListener
),可能如下所示:

public interface BoardListener {
    public void squareSelected(int x, int y);
}
然后在你的
类中维护一组
列表
侦听器,并在它们之间循环,在每个侦听器上调用squareSelected,当选择一个square时


但是,我会研究模型-视图-控制器模式,在该模式中,视图会监听模型的更改,控制器会检测用户的操作并相应地更改模型。

我建议稍微修改一下您的设计。拥有游戏逻辑和跟踪棋盘上的棋子位置都可以在“引擎”(或一系列没有视觉显示的类)中完成

然后,您将拥有一个中间类,用于将所有工件位置通信到一个可互换的显示类。它还可以处理从display类到引擎的任何通信(例如单击以放置X或O)


另外,我想的是跳棋,而不是在打这个字的时候用tic-tac-toe,但是这个设计仍然适用

我已经在我的Board类中这样做了-我需要让Board类通知游戏类警告:对于Board类中的侦听器列表,请使用CopyOnWriteArrayList。当棋盘在监听器中循环,并且在迭代过程中监听器试图删除自身时,这可以防止ConcurrentModificationException。@MarkPeters:我创建了这个接口,然后让棋盘和游戏都实现这个接口。那么我有没有板调用函数???我不太清楚你的意思。在线教程似乎希望我扩展Observable@Not重要提示:电路板不需要监听自身,因此不需要实现接口。它将负责触发事件;也就是说,依次对每个侦听器调用
squareSelected()
。@MarkPeters:我错过了你答案中的Set/List部分。谢谢只要StackOverflow允许我就接受。另一方面。。。输入“TttGame”不是让你发疯吗?