Utilizzare i thread: crei un thread assieme al frame (e magari gli passi il frame stesso nel costruttore) che attende 30 secondi e poi richiama una dispose() o una hide() sul frame (a seconda se vuoi chiudere o semplicemente nascondere la finestra).
Un esempio al volo del metodo run() di quel thread:
	codice:
	public class TuoThread extends Thread {
   private JFrame finestra;
   public TuoThread(JFrame finestra) { this.finestra = finestra; }
   public void run() {
      try {
         sleep(30000);   // Attendo 30 secondi
         if (finestra != null) finestra.dispose();   // Chiudo la finestra
      } catch (Exception e) { e.printStackTrace(); }
   }
}
 
Potresti, a questo punto, creare il thread e avviarlo subito dopo aver visualizzato la finestra:
	codice:
	// Suppongo che la tua finestra si chiami "fin":
fin.setVisible( true );
TuoThread tt = new TuoThread( fin );
tt.start();
 
Ciao. 