1

我正在尝试遵循 MVC 设计,目前在我的 Controller 类中创建了一个 MouseAdapter。我的一个模型类中有一个与 GridLayout 大小相同的数组。因此,当有人单击网格中某处的 JPanel 时,我会让 MouseAdapter 通知模型并执行某些操作。JPanels 属于另一个类,View。

但是为此我需要那个特定JPanel的索引/位置,有什么方法可以得到它吗?

我检查了 MouseEvent 的 GetX 和 GetY 方法,其中状态:

GetX - 返回事件相对于源组件的水平 x 位置。

Get Y - 返回事件相对于源组件的垂直 y 位置。

相对于源组件,是不是说JPanel的左上角是0、0?那我怎么知道 GridLayout 中的哪些面板被点击了呢?

4

2 回答 2

1

将您需要的信息放入您添加到组件的鼠标侦听器中。在设置中执行此操作比使用映射和查找更容易。

于 2011-01-13T16:15:38.087 回答
0

您可以在视图类中构建一个 Map 并创建一个方法

public void getJPanelPos(JPanel panel) 

检索 tyhe 事件的 JPanel 源的位置

于 2011-01-13T16:14:18.470 回答