加入收藏 | 设为首页 | 会员中心 | 我要投稿 商洛站长网 (https://www.0914zz.com/)- AI应用、CDN、边缘计算、云计算、物联网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在JPanel的任何地方检测鼠标进入/退出事件

发布时间:2020-09-01 23:07:52 所属栏目:Java 来源:互联网
导读:基本上有一个JPanel,我想知道当鼠标进入JPanel的区域并退出JPanel的区域.所以我添加了一个鼠标监听器,但是如果JPanel上有组件,并且鼠标移过其中一个,它将被检测为JPanel上的一个退出,即使组件位于JPanel上.我想知道有没有人知道任何方法来解决这个问题,而不用

基本上有一个JPanel,我想知道当鼠标进入JPanel的区域并退出JPanel的区域.所以我添加了一个鼠标监听器,但是如果JPanel上有组件,并且鼠标移过其中一个,它将被检测为JPanel上的一个退出,即使组件位于JPanel上.我想知道有没有人知道任何方法来解决这个问题,而不用像在JPanel上的所有组件添加监听器呢?

解决方法

以下是可能包含其他组件的组件的一种方法:

>添加一个全局AWT事件侦听器来获取所有的鼠标事件.例如:

Toolkit.getDefaultToolkit().addAWTEventListener( 
   new TargetedMouseHandler( panel ),AWTEvent.MOUSE_EVENT_MASK );

>实现TargetedMouseHandler以忽略由面板或其中一个面板的子项不提供的事件(您可以使用SwingUtilities.isDescendingFrom来测试).跟踪鼠标是否已经在面板的边界内.当您在面板或其中一个孩子中获取MouseEvent.MOUSE_ENTERED事件时,请将标志设置为true.>当您获得MouseEvent.MOUSE_EXITED事件时,只有当MouseEvent中的点超出目标面板的边界时,才会重置该标志. SwingUtilities.convertPoint和Component.getBounds().contains()将在这里派上用场.

(编辑:商洛站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读