簡體   English   中英

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));
          }
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM