1

我需要在我的 JTree 上显示弹出菜单,然后像这样添加了鼠标侦听器:

  tree.addMouseListener(new MouseAdapter(){
     public void mouseClicked(MouseEvent me){
        if (SwingUtilities.isRightMouseButton(me)){
           //.. some code to show popup menu
        }
     }
  });

但有时这个事件只是被跳过:我点击了,但mouseClicked()没有被调用。同样的情况发生在JTabbedPane:我确实右键单击某个选项卡,有时mouseClicked()没有调用,但选项卡实际上已切换

UPD:这发生在大约 10% 的点击中。经常忽略它。

顺便说一句,我可以添加ChangeListener这样JTabpedPane的,并且这个事件永远不会被跳过,但我也需要处理鼠标,我完全不知道这里有什么问题。

任何帮助表示赞赏。

4

1 回答 1

3

我想问题在于,在 10% 的点击中,您实际上并没有点击,而是开始和完成了一次拖动。这就是为什么 mouseClicked 事件不起作用的原因。

尝试监听 mousePressed 或 mouseReleased MouseAdapter 的事件(取决于您想要的行为)而不是 mouseClicked 事件。

于 2012-04-20T16:45:25.957 回答