Non è proprio un buon approccio .... cioè, si può fare, si fa ... ma devi scrivere di più di quello che invece basterebbe. Ed essendo classi separate, quelle dei listener, la realtà (e rischio in generale) è che la logica applicativa venga appunto sparpagliata in più classi, pure come dici di package differente.
A dire il vero, sarebbe meglio se ciascuna classe della finestra abbia i listener gestiti internamente.