2013-04-24 59 views
2

鏈接後:How to use MouseListener to find a specific cell in a grid使用的MouseListener在網格中選擇的單元格區域

我想創建一個戰列艦遊戲,用由100個細胞的10×10格。網格擴展了JPanel,Cell也擴展了JPanel。早些時候,我做了上面的鏈接,詢問如何實現一個MouseListener來做到這一點。由於代碼全部在該頁面上,因此我只是要參考它。

有人發佈了一個很好的答案,我接受了該鏈接。我現在可以使用MouseListener來檢測網格中任何單元格上的移動,點擊等。

但是,我已經打了另一個路障。我正在嘗試將船放在我的網格上。我現在忘記了方向(因爲我假設所有的船都將水平放置)。第一艘船將佔用五個單元。我想將光標移動到網格上的一個單元格上,並有四個其他「尾部」單元格,光標所在單元格的右側也會突出顯示。如果總共沒有五個空閒單元(可能是因爲光標太靠近網格邊緣),則單元格將變成紅色。否則,他們會變成綠色。

第一艘船放置後,第二艘船需要放置。它是四個細胞長。因此,當它懸停在一個單元格上時,它將具有三個單元格的「尾部」,依此類推。

我很高興如何改變顏色,如何處理方向以及如何從五艘船改爲四艘船等等。但是,我不知道如何一次選擇多個單元格。 有誰知道如何實現這個?我很想發佈我所嘗試過的,但事實是,我什麼都沒有。

回答

1

通常,選擇單元格的行或列與選擇單元格的矩形相同。

  • mouseClicked方法設置初始單元格。

  • mouseMoved方法設置鼠標所在的當前單元格。這樣可以直觀地向用戶指示已選擇了哪些單元格。

  • mouseReleased方法設置最終的單元格。

您檢查以查看最終單元格的初始單元格組成一行或一列。行或列的長度決定您放置哪艘船。這使您可以按任何順序放置船舶,而不僅僅是最大到最小。

您必須添加一個MouseMoveListener才能使用mouseMoved方法。

相關問題