Java Swing:如何通过JLayeredPane传递鼠标事件
Java Swing:如何通过JLayeredPane传递鼠标事件,java,swing,mouseevent,jlayeredpane,Java,Swing,Mouseevent,Jlayeredpane,JLayeredPane能否将鼠标事件从顶层传递到下层 我在JLayeredPane中有两个组件:一个JFrame显示地图,另一个JEditorPane在上面显示HTML文本。JEditorPane部分透明,用作覆盖,在地图顶部显示文本,但在其他方面不可见 我的问题:当鼠标移动到JEditorPane的透明部分时,贴图的JFrame不会获取鼠标事件 在JavaFX中,StackPane组件具有setPickOnBounds(false)将鼠标事件传递到下面的帧(如果鼠标位于透明像素上) JLay
JLayeredPane
能否将鼠标事件从顶层传递到下层
我在JLayeredPane
中有两个组件:一个JFrame
显示地图,另一个JEditorPane
在上面显示HTML文本。JEditorPane
部分透明,用作覆盖,在地图顶部显示文本,但在其他方面不可见
我的问题:当鼠标移动到JEditorPane
的透明部分时,贴图的JFrame
不会获取鼠标事件
在JavaFX中,StackPane
组件具有setPickOnBounds(false)
将鼠标事件传递到下面的帧(如果鼠标位于透明像素上)
JLayeredPane
中是否有类似的内容?要将鼠标事件e
传递给组件c
,请使用
c.dispatchEvent(SwingUtilities.convertMouseEvent(e.getComponent(),e,c));
例如,要将鼠标单击事件从b
传递到c
,请使用
b.addMouseListener(
新的MouseAdapter(){
@凌驾
公共无效mouseClicked(MouseEvent e){
c、 dispatchEvent(SwingUtilities.ConvertMouseeEvent(b、e、c));
}
});
基本上,我在寻找与此相反的东西:为什么你不能将你的侦听器连接到绝地窗格
?@Raffaele我可以,但我如何将事件传递到另一层?为什么你需要?您不能在该侦听器中处理事件吗?mapJFrame
包含许多不同的组件,其中有许多不同的关联鼠标事件已经在中编程。因此,只将事件转发到正确的层而不是重构整个程序将更简单、更不容易出错。