Como abrir uma nova janela JFreeChart independente de um outro JFrame

2 respostas
J

eu tive um problema no código que ao instanciar a nova janela JFreeChart ela aparece, mas ela não fecha sozinha apenas quando eu fecho o JFrame Principal, eu queria saber como faço para fechar esta janela sem precisar fechar o JFrame Principal

2 Respostas

darlan_machado

Como está teu código?

J

Darlan_machado

esse e o código da janela que quero abrir

import java.awt.Color;

import java.awt.BasicStroke;

import java.awt.Dialog;

import javax.swing.JFrame;
import org.jfree.chart.ChartPanel;

import org.jfree.chart.JFreeChart;

import org.jfree.data.xy.XYDataset;

import org.jfree.data.xy.XYSeries;

import org.jfree.ui.ApplicationFrame;

import org.jfree.ui.RefineryUtilities;

import org.jfree.chart.plot.XYPlot;

import org.jfree.chart.ChartFactory;

import org.jfree.chart.plot.PlotOrientation;

import org.jfree.data.xy.XYSeriesCollection;

import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;

public class XYLineChart_AWT extends JFrame {

public XYLineChart_AWT( String applicationTitle, String chartTitle,Double[][] x,int tamx ) {

super(applicationTitle);

JFreeChart xylineChart = ChartFactory.createXYLineChart(chartTitle ,Tempo ,Temperatura,createDataset(x,tamx) ,PlotOrientation.VERTICAL ,true , true , false);
ChartPanel chartPanel = new ChartPanel( xylineChart );
  chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
  final XYPlot plot = xylineChart.getXYPlot( );
  
  XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );
  renderer.setSeriesPaint( 0 , Color.RED );

  renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );

  plot.setRenderer( renderer ); 
  setContentPane( chartPanel ); 
  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  setAutoRequestFocus(true);
  setVisible(true);

}

private XYDataset createDataset(Double[][] x,int tamx) {
final XYSeries temp = new XYSeries( “Temperatura Ao Longo do Tempo” );

for(int i=0;i<tamx;i++){
    
    temp.add(  x[i][0],x[i][1] );  
     
  }
         
               
  
  final XYSeriesCollection dataset = new XYSeriesCollection( );          
  dataset.addSeries(temp );          
  return dataset;

}

}

e o código a baixo ~e onde eu abro ou instancio a janela

DefaultTableModel dtmProdutos = (DefaultTableModel) jTable1.getModel();

Double d[][] = new Double[dtmProdutos.getRowCount()][dtmProdutos.getColumnCount()];

for (int i = 0; i < dtmProdutos.getRowCount(); i++) {

for (int j = 0; j < dtmProdutos.getColumnCount(); j++) {

try {
d[i][j] = (Double) dtmProdutos.getValueAt(i, j);
                
            } catch (Exception e) {

            }

        }

    }
    this.chart = new XYLineChart_AWT("Temperatura com Arduino", "Variacao de Temperatura Ao Longo do Tempo", d, dtmProdutos.getRowCount());
    this.chart.pack();
    RefineryUtilities.centerFrameOnScreen(this.chart);
    
    this.chart.setEnabled(true);
    this.chart.setResizable(true);
    jButton3.setEnabled(false);
    jButton4.setEnabled(true);
Criado 2 de maio de 2018
Ultima resposta 2 de mai. de 2018
Respostas 2
Participantes 2