链接帖子:How to use MouseListener to find a specific cell in a grid
我正在尝试创建一个战舰游戏,其 10x10 网格由 100 个单元格组成。 Grid 扩展了 JPanel,Cell 也扩展了 JPanel。早些时候,我创建了上面的链接来询问如何实现 MouseListener 来执行此操作。由于代码都在该页面上,我只是引用一下。
有人在该链接上发布了一个很好的答案,我接受了。我现在可以使用 MouseListener 来检测网格上任何单元格中的移动、点击等。
但是,我遇到了另一个障碍。我正在尝试将船只放置在我的网格上。我现在忘记了方向(因为我假设所有船只都将水平放置)。第一艘船将占用五个单元。我想将光标移动到网格上的一个单元格上,并有其他四个“尾部”单元格,光标位于单元格的右侧,也突出显示。如果总共没有五个空闲单元格(可能是因为光标太靠近网格边缘),则单元格将变成红色。否则,它们会变成绿色。
放置第一艘船后,需要放置第二艘船。它有四个单元格长。因此,当鼠标悬停在一个单元格上时,它将有一个由三个单元格组成的“尾部”,依此类推。
我对如何改变颜色、如何处理方向以及如何从五艘船改为四艘船等等感到满意。但是,我不知道如何一次选择多个单元格。 有人知道如何实现吗?我很想发布我尝试过的内容,但事实是,我什么也没有。
最佳答案
使用 JButtons/JToggleButtons 代替 JPanels
您可以使用图标(将一张图像分割为所需的数量)
将 ActionListener 用于(未修饰的)JButton
override ButtonModel for implemented mouse events (无需/不需要添加MouseListner)在JButton中
关于java - 使用 MouseListener 选择网格中的一系列单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16196379/