Нужно как-то проверить, что после события mouseReleased, мышь осталась на панели или за ней. Я искал через Debug какие-нибудь значения, за которые можно зацепиться, но ничего толкового не заметил. Мб есть какие-нибудь идеи?
Нашёл решение: нужно объявить булеву переменную, в которую писать состояния по событиям mouseEntered и mouseExited, а в mouseReleased смотреть эту переменную и уже в зависимости от её значения выполнять действия.