我目前正在编写 Connect 4 Applet 游戏,并且我已经实现了所有 AI 逻辑。现在我需要设计一个简单的 GUI,这样我就可以玩了。
我有一个我想要使用的棋盘图像(透明的 png),并且我希望能够通过单击该图像来执行移动(例如,在我想要玩的特定列上)。
执行此操作的最佳方法是什么?我想使用一个扩展 JPanel 的类,我在其中放置所有按钮和东西......包括绘制板图像。但是我可以在图像上放置鼠标监听器吗?
最佳答案
"But can i put a mouse listener on an Image??"
不,或者至少,不在您所想的环境中。
根据您想要实现的目标,您有多种选择。
基本要求是您需要确切地知道每个点击点在图像上的位置。最好通过使用图像编辑程序来绘制“热点”,然后将它们编码到您的程序中来实现这一点
你可以...
使用 JLabel
渲染板图像并附加 MouseListener
到它。
我遇到的问题是试图找出如何使用玩家标记更新图像。
你可以...
使用 JPanel
并覆盖它的 paintComponent
渲染图像和玩家移动/标记。
然后您将添加 MouseListener
到它并从那里监视鼠标点击。
无论您使用哪种方法,我都可能会创建一个 List
的Rectangle
s 代表用户可以点击的热点。每次mousePressed
被称为,我会遍历这个列表并使用 Rectangle#contains(Point)
,通过鼠标点击点,判断点击的是哪个热点。
然后,您可以将其与游戏模型进行比较,以确定其是否有效,并根据需要采取适当的操作。
看看How to write a Mouse Listener和 Performing custom painting了解更多详情
关于java - 用 Java 连接 4 GUI (JApplet),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17915229/