Prova a lanciare il setVisible nel costruttore stesso della JDialog oppure aggiungi un metodo public nella classe che genera la JDialog con cui chiamare il requestFocus. Penso che il problema attuale sia che il JButton richiede il focus prima che la JDialog sia resa visibile e quindi all'atto di mostrare la JDialog il focus venga dato agli elementi della dialog secondo il modello standard di focusTraversal (altra soluzione implementare una tua focustraversalpolicy per l'intera dialog ... ma ne vale la pena?)