Bom dia pessoal estou precisando gerar um grafico com o jfreechart para uma trabalho da faculdade mas realmente to apanhando feio,
eu preciso gerar um grafico simples que pega uma serie de numeros da sequencia de fibonnacci e mostra qnt tempo cada um deles demorou pra ser processado.
bom vou colocar aqui oq considero importante em 1 primeiro momento se puderem me ajudar vou colocando o restante necessario.
private void jButtonCalcularActionPerformed(java.awt.event.ActionEvent evt) {
operacao = new Operacoes();
TelaFibo t = new TelaFibo();
int[] valoresParaCalculo = pegaValores();
resultado = new long[10];
tempos = new long[10];
jButtonCalcular.setVisible(false);
if (jRadioButtonExponencial.isSelected()) {
fimGrafico = 0;
for (int i = 0; i < 10; i++) {
inicio = System.nanoTime();
resultado[i] = operacao.fib1(valoresParaCalculo[i]);
fim = System.nanoTime();
tempos[i] = fim - inicio;
if (fimGrafico < tempos[i]) {
fimGrafico = tempos[i];
}
}
setaLabels(resultado, tempos);
}
if (jRadioButtonLinear.isSelected()) {
fimGrafico = 0;
for (int i = 0; i < 10; i++) {
inicio = System.nanoTime();
resultado[i] = operacao.fib2(valoresParaCalculo[i]);
fim = System.nanoTime();
tempos[i] = fim - inicio;
if (fimGrafico < tempos[i]) {
fimGrafico = tempos[i];
}
}
setaLabels(resultado, tempos);
}
if (jRadioButtonLog.isSelected()) {
fimGrafico=0;
for (int i = 0; i < 10; i++) {
inicio = System.nanoTime();
resultado[i] = operacao.fib3(valoresParaCalculo[i]);
fim = System.nanoTime();
tempos[i] = fim - inicio;
if (fimGrafico < tempos[i]) {
fimGrafico = tempos[i];
}
}
setaLabels(resultado, tempos);
}
jButtonVoltar.setVisible(true);
jTextField1.setEditable(false);
jTextField2.setEditable(false);
jTextField3.setEditable(false);
jTextField4.setEditable(false);
jTextField5.setEditable(false);
jTextField6.setEditable(false);
jTextField7.setEditable(false);
jTextField8.setEditable(false);
jTextField9.setEditable(false);
jTextField10.setEditable(false);
}
public void setaLabels(long[] resultados, long[] tempos) {
jLabel4.setText(String.valueOf(resultado[0]));
jLabel5.setText(String.valueOf(resultado[1]));
jLabel6.setText(String.valueOf(resultado[2]));
jLabel7.setText(String.valueOf(resultado[3]));
jLabel8.setText(String.valueOf(resultado[4]));
jLabel9.setText(String.valueOf(resultado[5]));
jLabel10.setText(String.valueOf(resultado[6]));
jLabel11.setText(String.valueOf(resultado[7]));
jLabel12.setText(String.valueOf(resultado[8]));
jLabel13.setText(String.valueOf(resultado[9]));
jLabel17.setText(String.valueOf(tempos[0]));
jLabel18.setText(String.valueOf(tempos[1]));
jLabel19.setText(String.valueOf(tempos[2]));
jLabel20.setText(String.valueOf(tempos[3]));
jLabel21.setText(String.valueOf(tempos[4]));
jLabel22.setText(String.valueOf(tempos[5]));
jLabel23.setText(String.valueOf(tempos[6]));
jLabel24.setText(String.valueOf(tempos[7]));
jLabel25.setText(String.valueOf(tempos[8]));
jLabel26.setText(String.valueOf(tempos[9]));
}
public int[] pegaValores() {
valores = new int[10];
valores[0] = Integer.parseInt(jTextField1.getText());
valores[1] = Integer.parseInt(jTextField2.getText());
valores[2] = Integer.parseInt(jTextField3.getText());
valores[3] = Integer.parseInt(jTextField4.getText());
valores[4] = Integer.parseInt(jTextField5.getText());
valores[5] = Integer.parseInt(jTextField6.getText());
valores[6] = Integer.parseInt(jTextField7.getText());
valores[7] = Integer.parseInt(jTextField8.getText());
valores[8] = Integer.parseInt(jTextField9.getText());
valores[9] = Integer.parseInt(jTextField10.getText());
return valores;
}
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButtonVoltarActionPerformed(java.awt.event.ActionEvent evt) {
jButtonCalcular.setVisible(true);
jButtonVoltar.setVisible(false);
jLabel4.setText("");
jLabel5.setText("");
jLabel6.setText("");
jLabel7.setText("");
jLabel8.setText("");
jLabel9.setText("");
jLabel10.setText("");
jLabel11.setText("");
jLabel12.setText("");
jLabel13.setText("");
jLabel17.setText("");
jLabel18.setText("");
jLabel19.setText("");
jLabel20.setText("");
jLabel21.setText("");
jLabel22.setText("");
jLabel23.setText("");
jLabel24.setText("");
jLabel25.setText("");
jLabel26.setText("");
jTextField1.setEditable(true);
jTextField2.setEditable(true);
jTextField3.setEditable(true);
jTextField4.setEditable(true);
jTextField5.setEditable(true);
jTextField6.setEditable(true);
jTextField7.setEditable(true);
jTextField8.setEditable(true);
jTextField9.setEditable(true);
jTextField10.setEditable(true);
}
private void jButtonGeraGraficoActionPerformed(java.awt.event.ActionEvent evt) {
GeradorDeGrafico g = new GeradorDeGrafico(tempos, resultado);
}
import java.io.IOException;
import java.io.OutputStream;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.Dataset;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
public class GeradorDeGrafico {
JFreeChart grafico;
DefaultCategoryDataset dataset;
public void criaGrafico() {
this.grafico = ChartFactory.createLineChart("Fibonnacci", "Tempo", "Sequecia",
dataset, PlotOrientation.VERTICAL, true, true, false);
}
public GeradorDeGrafico(long[] tempo, long[] resultado) {
TimeSeries series = new TimeSeries("Fibonnaci");
for (int i = 0; i <= 9; i++) {
String resul = String.valueOf(resultado[i]);
dataset.addValue(tempo[i], "Tempo de Execução", resul);
criaGrafico();
}
}
public void salvar(OutputStream out)throws IOException{
ChartUtilities.writeChartAsPNG(out, grafico, 500, 350);
}
}
O erro atualmente qnd eu clico no botao gerar grafico e esse aqui o
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at GeradorDeGrafico.<init>(GeradorDeGrafico.java:29)
at TelaFibo.jButtonGeraGraficoActionPerformed(TelaFibo.java:551)
at TelaFibo.access$1200(TelaFibo.java:18)
at TelaFibo$13.actionPerformed(TelaFibo.java:194)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caso alguem saiba uma forma + facil de criar uma grafico tbm aceito sugestoes.
valeu