слушатели мыши колеблются, будучи перехваченными дочерними компонентами

У меня есть свинг-компонент, который имеет несколько подкомпонентов. Что я хочу сделать, изменить некоторую метку, если указатель мыши находится над каким-либо из этих компонентов, а затем изменить ее на что-то другое, если мышь переместится от всех компонентов. Я пытаюсь найти более эффективный способ сделать это.

В настоящее время у меня есть слушатели мыши над всеми дочерними компонентами, которые выглядят примерно так:

class AMouseListener extends MouseAdapter {
    private boolean mouseOver;
    mouseEntered(MouseEvent e) { mouseOver = true; updateLabel(); }
    mouseExited(MouseEvent e) { mouseOver = false; updateLabel(); }

    void updateLabel() {
       String text = "not-over-any-components";
       // listeners are each of the listeners added to the child components
       for ( AMouseListener listener :listeners ) {
          if ( listener.mouseOver ) {
             text = "over-a-component";
             break;
          }
       }
    }
}

Это работает, но я чувствую, что должен быть лучший способ справиться с этим, обрабатывая только события mouseEntered и mouseExited в родительском контейнере, но поскольку дочерние компоненты перехватывают эти события, я не уверен, как это сделать ( не обязательно иметь контроль над дочерними компонентами, поэтому я не могу переслать события мыши на родительское событие, если бы захотел).

Ответы на вопрос(3)

Ваш ответ на вопрос