Semplicemente, dovrai istanziare la classe che rappresenta l'altra finestra e, se non è già previsto dal costruttore, visualizzarla.

Esempio:
codice:
// La tua classe principale
class FramePrincipale extends JFrame {
   private FrameSecondario secondario;   // Un riferimento alla finestra secondaria

   ...

   // Il gestore del pulsante
   public void actionPerformed(ActionEvent ae) {
      secondario = new FrameSecondario( ... );
      secondario.setVisible( true );
   }
}
Il codice di esempio sopra presuppone queste cose:

1) Che tu abbia una classe "FrameSecondario" che estende JFrame
2) Il costruttore di "FrameSecondario" non richiama setVisible( true ) [anche se non sarebbe un errore]
3) Il riferimento al frame secondario è visibile all'interno dell'ActionListener che si occupa di gestire il clic del pulsante

Inoltre, nell'esempio, non si è tenuto conto di eventuali aperture doppie: se l'utente clicca più volte sul pulsante del frame principale, verranno aperte più finestre secondarie (e verrà perso il riferimento a quella aperta precedentemente).


Ciao.