Generell läuft das auf das Observer Pattern hinaus. Und das kann man schnell und einfach selbst implementieren oder man nimmt sich irgendwelche fertigen Klassen der verwendeten Libraries. Das hängt halt immer davon ab, was man genau braucht und nutzt.
JavaFX bietet z.B, die ganzen *Property Klassen, die das ObserverPattern ebenfalls nutzen.
Aber generell ist es relativ einfach, da etwas eigenes zu bauen. Am besten ein Funktionales Interface erstellen, dann hat man in seiner Klasse eine List von den Elementen. Bei addXXXListener(MeinFunctionalesInterface) wird das hinzugefügt. Und dann wird beim Event auslösen halt für jedes Element die Methode des funktionalen Interfaces aufgerufen. Und wenn man es einfach haben will, dann nimmt man sich einfach ein vorhandenes funktionales Interface - wobei ich da halt nicht mag, dass dort dann nicht klar ist, um was es sich handelt.