编程语言
首页 > 编程语言> > java – 使用重叠组件拦截或委派事件

java – 使用重叠组件拦截或委派事件

作者:互联网

我有两个大小相等的JPanel,一个在另一个上面.顶层用作拖动选择面板,另一个用于添加其他组件.我的问题是这些添加组件的鼠标事件处理程序不会被触发,因为它们由覆盖面板处理.我怎样才能拖动这些添加组件的顶部,但仍然为底层组件启用了mouseEntered和mouseExited?

这是一个截图:

正如您所看到的,选择矩形被绘制在覆盖的JPanel上,但就好像我的鼠标无法通过此面板查看下面的内容(寻找更好的解释方法).

解决方法:

不要使用覆盖面板.我在你上一篇文章中提出了一个关于如何做到这一点的建议.

或者,如果您使用覆盖面板,则只需使用它进行绘制,让底层面板监听鼠标事件,然后在覆盖面板上调用重新绘制.

编辑:

也许更好的方法是在单个组件上使用MouseListener,然后处理矩形的绘制,您可以使用Global Event Listener来监听mousePressed,mouseDragged,mouseReleased事件.您需要检查每个事件的来源,以查看源是否是面板本身或面板上的组件.您可以使用SwingUtilities.isDescendingFrom(…)来帮助进行第二次测试.

标签:miglayout,paintcomponent,java,events,swing
来源: https://codeday.me/bug/20190726/1540450.html