MouseEvents отправляются в самый верхний (в z-порядке) компонент, который для них включен, для которого зарегистрирован mouseListener или внутренне настроил eventMask для их обработки. Хотя обычно JLabel является прозрачным (и, следовательно, события должны достигать базовой панели), они могут стать непрозрачными по событию f.i. настройка всплывающей подсказки.
В jdk 7 вы можете использовать JLayer , чтобы получить все (мышиные) события, доставленные его дочерним элементам. Документация JLayer
гласит:
JLayer - хорошее решение, если вам нужно только покрасить поверх
составной компонент или перехват входных событий из его подкомпонентов .
Его предшественником для jdk6 является проект JXLayer в SwingLabs. Еще одним вариантом является использование AWTEventListener, как описано в блоге Роба (будьте осторожны: может быть запрещено в контексте с ограниченной безопасностью)