如何知道MouseWheelListener是否可以接收事件?

时间:2014-11-15 20:51:42

标签: java swing listener mousewheel mouselistener

有一个JPanel附加MouseWheelListener。此面板具有其他几个JPanel,并完全占据父JPanel区域。我想知道当鼠标位于此父MouseWheelListener之上时,JPanel是否可以接收事件。如果我将MouseListener附加到父JPanel - 它没有收到任何事件,因为除此之外还有其他几个JPanel。

也许有一些方法可以找出MouseWheelListener何时可以接收事件?我的意思是,如果你站在JScrollPane - 只有那时你才能移动滚动条(并且它上面有多少JPanel并不重要。)

编辑:

AWTEventListener也没有帮助 - 上面的JPanels仍然阻止了父级JPanel事件......:

AWTEventListener awt = new AWTEventListener() {

        @Override
        public void eventDispatched(AWTEvent e) {

            if (MouseEvent.MOUSE_ENTERED == e.getID()) {
                MouseEvent event = (MouseEvent) e;
                for (Component c : getComponents()) {//get all parent JPanel components
                    if (event.getComponent().equals(c)) {
                        active = true;
                        scrollBar.repaint();
                        break;
                    }
                }
            } else if (MouseEvent.MOUSE_EXITED == e.getID()) {
                MouseEvent event = (MouseEvent) e;
                for (Component c : getComponents()) {
                    if (event.getComponent().equals(c)) {
                        active = false;
                        scrollBar.repaint();
                        break;
                    }
                }
            }
        }
    };

    Toolkit.getDefaultToolkit().addAWTEventListener(awt, AWTEvent.MOUSE_EVENT_MASK);

也许不可能实现这一点......

0 个答案:

没有答案