有一个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);
也许不可能实现这一点......