Dispose On Close

Boa noite galera.
to chamando uma classe(Frame) dentro de um botao para gerar um gráfico…mas quando fecho o grafico ele fecha o programa todo. ja passei o parametro dispose_on_close mas nao adiantou…segue o codigo:

codigo classe:

public Grafico(String title) {
super(title);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

XYSeriesCollection dataset = new XYSeriesCollection();

XYSeries series1 = new XYSeries("Series 1");
series1.add(1.0, 4.5);
series1.add(4.4, 3.2);
dataset.addSeries(series1);

XYSeries series2 = new XYSeries("Series 2");
series2.add(3.2, 8.5);
series2.add(4.9, 3.7);
dataset.addSeries(series2);
JFreeChart chart = ChartFactory.createScatterPlot(
"Dados Agrupados", // title
"X", "Y", // axis labels
dataset, // dataset
PlotOrientation.VERTICAL,
true, // legend? yes
true, // tooltips? yes
false // URLs? no
);
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(380, 250));
setContentPane(chartPanel);
}

codigo botao

private void btn_graficoActionPerformed(java.awt.event.ActionEvent evt) {                                            
        new Principal.Grafico("Dados").show();
        new Principal.Grafico("Dados").setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    }  

Cara, dá uma olhada no que você está fazendo no handler do botão. Primeiro você instancia uma janela e a exibe. Depois você dá “new” de novo, criando outra janela. Na segunda janela é que você seta o parâmetro “DefaultCloseOperation”.
Acho que o correto seria:

grafico = new Principal.Grafico("Dados");  
grafico.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); 
grafico.show();

Entao cara, jah teste desta forma tbm e não deu certo…continua fechando o programa principal quando fecho o grafico!!

Principal.Grafico g1 = new Principal.Grafico("Dados");
g1.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
g1.show();

Nova tentativa: usa a constante DISPOSE_ON_CLOSE da classe JFrame… assim:

g1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  

Sem sucesso na tentativa!
Continua fechando o programa Principal