Java 在同一事件上以不同的方式使用不同的侦听器
我有一点难以理解swing和事件驱动界面。我在做一个学校的项目,我们必须建造一个类似棋盘的东西,在那里我们可以放置棋子,移动棋子,并在输入上互相攻击。这就是我迷路的地方: 我的棋盘(有点)摆好了。我在一个JPanel上布置了许多图块(这是一个保存坐标和图块的模型,还有一个视图,目前它是JComponent的一个基本子类)。 然后我有了可以移动、攻击等的棋子 现在,当我点击瓷砖时,我必须做不同的事情。例如:Java 在同一事件上以不同的方式使用不同的侦听器,java,swing,events,event-handling,actionevent,Java,Swing,Events,Event Handling,Actionevent,我有一点难以理解swing和事件驱动界面。我在做一个学校的项目,我们必须建造一个类似棋盘的东西,在那里我们可以放置棋子,移动棋子,并在输入上互相攻击。这就是我迷路的地方: 我的棋盘(有点)摆好了。我在一个JPanel上布置了许多图块(这是一个保存坐标和图块的模型,还有一个视图,目前它是JComponent的一个基本子类)。 然后我有了可以移动、攻击等的棋子 现在,当我点击瓷砖时,我必须做不同的事情。例如: 如果瓷砖是空的,我想在上面放一个当铺 如果互动程序被占用,我希望弹出一个对话框,上面有不
- 如果瓷砖是空的,我想在上面放一个当铺
- 如果互动程序被占用,我希望弹出一个对话框,上面有不同的按钮(移动、攻击…)
- 如果我单击“移动”,我必须单击另一个磁贴并检查它是否已被占用,然后更改第一个磁贴和棋子的状态
- 如果我点击攻击,我想点击另一个瓷砖并改变,如果它被占用,改变瓷砖上的兵的状态
我希望我清楚地暴露了我的问题。谢谢大家的帮助。看来你已经不再把事情复杂化了。为什么要对话?为什么不用一块突出显示单击的正方形,然后让用户再次单击并移动单击。然后,模型(游戏的非gui表示)检查移动是否有效,是否是攻击,以及是否是攻击。所有的主要逻辑都应该进入你的模型,GUI本身应该尽可能的哑。我考虑过这个对话框,因为我希望当用户用棋子点击一个平铺时会出现一个弹出窗口,这样它就可以选择做什么。你说“移动点击”,你的确切意思是什么?如果我删除了对话,我当然会删除一层复杂的内容,但我是否仍然存在单击第一个互动程序,然后单击第二个互动程序,并以不同的方式对第二次单击作出反应的问题?是的,主要的逻辑已经存在于我的模型/控制器中,基本上我不太理解的是如何“收集数据”来提供逻辑。点击就是点击,对于GUI来说,“视图”只意味着“用户点击了这个方块”。然后将此信息报告给模型,其后续行为将取决于其当前状态。因此,模型应该知道这是第一次还是第二次单击,然后采取相应的行动。但是您的GUI侦听器可能非常简单,主要作用是向模型报告事件,就这样。哦,我明白您的意思了。这肯定会有帮助。