Fechar janela criada a partir do paint(Graphics g)

Pois é galera, tava querendo fechar a janela q o meu objeto cria… ja tentei dispose() ja tentei System.gc(),
não sei mais oq fazer =D
E tb, nao queria usar o setVisible(false) pq a ideia é fechar ela =P

segue abaixo o codigo.

class grafico:

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

public class Grafico extends JFrame 
{    
        int valorY=0;
        int size=500;
        int n1,n2,n3,n4,n5,n6,n7,n8,n9;
        
    public Grafico(int v1,int v2,int v3,int v4,int v5,int v6,int v7,int v8,int v9, int yAtual)
    {                
        super("Eixo");        
        setSize(size,size);
        setVisible(true);
        n1=(size/2)-v1+50;
        n2=(size/2)-v2+50;
        n3=(size/2)-v3+50;
        n4=(size/2)-v4+50;
        n5=(size/2)-v5+50;
        n6=(size/2)-v6+50;
        n7=(size/2)-v7+50;
        n8=(size/2)-v8+50;
        n9=(size/2)-v9+50;
        valorY=(size/2)-yAtual+50;
    }
     
    public void paint(Graphics g)
    {    
        
        super.paint(g);
        //Desenha o eixo cartesiano
        //g.setColor(new Color(255,0,0));
        g.drawLine(0,(size/2)+50,size,(size/2)+50);
        g.drawLine((size/2),0,(size/2),size);
        
        //Desenha os pontos em X
        for(int i=50; i<=size; i=i+50)
            g.drawLine(i, ((size/2)-2)+50, i, ((size/2)+2)+50);
        
        //Desenha os pontos em Y
        for(int i=50; i<=size; i=i+50)
            g.drawLine(((size/2)-2), i, ((size/2)+2), i);        
        
        g.setColor(new Color(255,0,0));
        //Desenhando as linhas        
        g.drawLine(0,n1,50,n2);        
        g.drawLine(50,n2,100,n3);
        g.drawLine(100,n3,150,n4);
        g.drawLine(150,n4,200,n5);
        g.drawLine(200,n5,250,n6);
        g.drawLine(250,n6,300,n7);
        g.drawLine(300,n7,350,n8);
        g.drawLine(350,n8,400,n9);
        g.drawLine(400,n9,450,valorY);
        
        //Marcando os pontos
        g.drawLine(50,n2-2,50,n2+2);
        g.drawLine(50-2,n2,50+2,n2);
        
        g.drawLine(100,n3-2,100,n3+2);
        g.drawLine(100-2,n3,100+2,n3);
        
        g.drawLine(150,n4-2,150,n4+2);
        g.drawLine(150-2,n4,150+2,n4);
        
        g.drawLine(200,n5-2,200,n5+2);
        g.drawLine(200-2,n5,200+2,n5);
        
        g.drawLine(250,n6-2,250,n6+2);
        g.drawLine(250-2,n6,250+2,n6);
        
        g.drawLine(300,n7-2,300,n7+2);
        g.drawLine(300-2,n7,300+2,n7);
        
        g.drawLine(350,n8-2,350,n8+2);
        g.drawLine(350-2,n8,350+2,n8);
        
        g.drawLine(400,n9-2,400,n9+2);
        g.drawLine(400-2,n9,400+2,n9);   
        
    }        
    
}

main:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TestaGrafico 
{
    public static void main(String[] args) throws InterruptedException
    {
        int valorY=0;
        int saida=1;
        int n1=0,n2=0,n3=0,n4=0,n5=0,n6=0,n7=0,n8=0,n9=0;         
        while(saida==1)
        {                 

                Grafico eixo = new Grafico(n1, n2, n3, n4, n5, n6, n7, n8, n9, valorY);
                eixo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                n1 = n2;
                n2 = n3;
                n3 = n4;
                n4 = n5;
                n5 = n6;
                n6 = n7;
                n7 = n8;
                n8 = n9;
                n9 = valorY;
                Thread.sleep(1000); // 1 segundo               
                valorY = (int) ((Math.random() * 250)+1);   
                System.gc();
                        
        }                          
        
    }
}

Sei que não é a melhor maneira de se fazer um eixo cartesiano/grafico, mas foi oq consegui pensar
vlws