java - Swing:有时会跳过 JTree 或其他组件上的鼠标事件

标签 java swing mouseevent jpopup

我需要在我的 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% 的点击会发生这种情况。往往无法忽视它。

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

感谢任何帮助。

最佳答案

我猜问题在于,在 10% 的点击中,您实际上并不是在点击,而是在开始和完成拖动。这就是 mouseClicked 事件不起作用的原因。

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

关于java - Swing:有时会跳过 JTree 或其他组件上的鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10247065/

相关文章:

java - GridBagLayout 为什么第三列更大?

java - 对于以下代码,即使我提供正确的输入,我也会收到错误的 InputMismatch 异常

java - 每次单击 JCheckBox 时如何绘制一个矩形?

java - 如何将JxBrowser背景设置为透明

java - JFrame如何自行刷新?

windows - SetCursorPos 无法通过远程桌面工作(从 WM_INPUT 事件中读取)

python - 绘制 networkx.Graph : how to change node position instead of resetting every node?

java - StringIndexOutOfBoundsException 具有简单的字符串操作

java - JScrollPane 不会滚动到 JTable 的底部

html - IE7、HTML - 为什么只需将鼠标移出容器即可解决溢出问题?