正确实现鼠标事件的方法

时间:2011-04-14 01:57:38

标签: java swing

我有代码,它在下面,在JPanel中显示一张照片。实际上,JPanel正在浏览相册,我已经拥有它,以便在点击JPanel时,面板前进到下一帧。我也对它进行了配置,以便在右键单击JPanel时,会显示一个弹出菜单。

我读到,在实现弹出菜单时,需要覆盖mousePressed()和mouseReleased()以捕获所有平台的触发器。但是,由于我有一个与JPanel关联的监听器,当用户单击窗口时,JPanel会前进两张照片。这是可以理解的,但是我应该如何对此进行编码以确保我在所有平台上显示弹出窗口(我的教授可以在Linux上检查我的程序,我必须在家里的Windows上编写代码)。

2 个答案:

答案 0 :(得分:3)

JComponents有一个属性componentPopupMenu - 设置该属性会使popupMenu自动出现,而无需在MouseListener中进行任何操作

 photoPanel.setComponentPopupMenu(photoPopupMenu);

然后确保您的鼠标触发动作(前进到下一个)仅在单个左侧按下时发生。

答案 1 :(得分:2)

使用

MouseEvent.isPopupTrigger() 

确定是否应该使用给定事件来显示弹出窗口。

你会把它放在每个方法(mousePressed和mouseReleased)