Java Swing:如何通过JLayeredPane传递鼠标事件
Java Swing: how to pass mouse events through JLayeredPane
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(
new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
c.dispatchEvent(SwingUtilities.convertMouseEvent(b, e, c));
}
});
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(
new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
c.dispatchEvent(SwingUtilities.convertMouseEvent(b, e, c));
}
});