Rolagem automatica do JScrollPanel ao focar component

Eu tenho varios componentes dentro de varios panels q ficam em um JScrollPanel
ao mudar o foco dos componentes, se o componente nao estiver visivel area de visao do ScrollPane, ele nao rola sozin
no delphi isso era automatica
procurei algumas solucoes e achei uma
onde eu teria q add um FocusListener em cada componente e usa o scrollRectToVisible do JScrollPane

mas ainda acho isso uma forma mto deselegante, pq teria q add um listener em tds os componentes

nao teria alguma forma melhor de fazer isso?

no delphi, tem como vc monitorar os WinProcs, no java eu consegui monitorar as teclas precionadas, usando

getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("released ENTER"),
                "doEnter");

teria como eu monitorar td evento de foco, sem ter q add um focusListener em tds os componentes?