AYUDENME PORFA CON ESTOS JFRAME

Alguien me puede ayudar , lo que pasa eske cree dos ventanas , en la ventana 1 llamo a ventana 2 con un boton, y kiero ocultar la primera para ke no siga abriendo mas ventanas, este es mi codigo y uso el dispose() para quitar la primera ventana pero no funciona.....

codigo:

mport java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class Ventana{
JFrame v1;
JButton b1;

public Ventana1(){
b1= new JButton("abre venrtana 2");
v1= new JFrame("Ventana 1");

}

public void frame(){

v1.setLayout(new FlowLayout());
v1.add(b1);
v1.setSize(400,400);
v1.setVisible(true);

b1.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent evento){
JFrame f2 = new JFrame("venatana 2");
f2.setSize(400,500);
f2.setVisible(true);
Ventana1.this.dispose();// AQUI ES DONDE LLAMO A LA CLASE SUPERIOR PARA DESHACER LA VENTANA1 PERO NO FUNCIONA, ME MARCA ERROR EN dispose();
}

});

}