2011-01-13 45 views
1

我想跟隨MVC設計,並且在我的Controller類中創建MouseAdapter。我有一個與我的模型類中的GridLayout大小相同的數組。 所以當有人點擊網格中的某個JPanel時,我會讓MouseAdapter通知模型並執行一些操作。 JPanels在另一個類View中。獲取GridLayout中JPanel的位置/索引?

但爲此我需要該特定JPanel的索引/位置,是否有某種方法可以獲得它?

我檢查了的MouseEvent的的getX和傑蒂方法,其狀態:

的getX - 返回事件相對於源組件的水平x座標。

獲取Y - 返回事件相對於源組件的垂直y位置。

相對於源組件,這是否意味着JPanel的左上角是0,0?那麼我怎麼知道GridLayout中的哪個面板被點擊了?

回答

0

您可以在您的視圖類,在地圖和一個創建方法

public void getJPanelPos(JPanel panel) 

檢索tyhe事件

1

的JPanel中源的位置把你所需要的信息在鼠標監聽器你添加到組件。在設置中執行此操作比映射和查找更容易。

+0

我該如何放置我沒有的東西?我不知道哪個JPanel會被點擊,這就是爲什麼我需要索引。 當你添加GridLayout時,你可以做一些像setLayout(new GridLayout(8,8))。我需要這兩個數字用於點擊的特定JPanel。有沒有什麼方法通過網格循環,就好像它是一個數組,使用兩個for循環?然後可能比較每個元素與event.getSource()? JPanels可能並不是唯一的,所以可能無法這樣工作。 – 2011-01-13 16:34:20