Java Swing: как передавать события мыши через JLayeredPane - PullRequest
0 голосов
/ 28 марта 2020

Может ли JLayeredPane передавать события мыши из верхнего слоя в нижний слой?

У меня есть два компонента внутри JLayeredPane: один JFrame, отображающий карту, и один JEditorPane отображение HTML текста поверх него. JEditorPane является частично прозрачным и функционирует как наложение, показывая текст поверх карты, но будучи невидимым в противном случае.

Моя проблема: когда мышь перемещается к прозрачным частям JEditorPane, JFrame карты не получает события мыши.

В JavaFX компонент StackPane имеет setPickOnBounds(false) для передачи событий мыши в нижние фреймы, если мышь находится над прозрачным пиксель.

Есть ли что-то подобное в JLayeredPane?

1 Ответ

1 голос
/ 28 марта 2020

Чтобы передать событие мыши 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));
          }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...