我有一个 JTable 和一个特定于每一行的弹出菜单。我想计算用户右键单击鼠标(Windows L&F)以调出弹出菜单的行。
我为表创建了一个 MouseListener,因此它在单击时获取 MouseEvent,并在正确的位置显示弹出菜单。但是当用户从弹出菜单中选择一个项目时,我无法确定用户首先右键单击的行是什么。弹出菜单调用的事件不再具有右键单击发生的 x,y 坐标。
我已经查看了弹出窗口的位置,但它属于框架,而不是表格,所以它和它的父级都没有我想要的正确 x,y 值。
我通过子类化 JPopupMenu 并设置我希望它在 MouseListener 中具有的 x 和 y 值来解决它。但在我看来,这对于任何想要在 JTable 上放置弹出菜单的人来说都是一个普遍的问题,我想知道我错过了什么。
有没有一种更简单的方法来做到这一点,尤其是不涉及子类化 JPopupMenu 的方法?