Olá a todos. Eu quero fazer um programa que mostre o nome a quantidade de votosm que cada candidato recebeu, e mostre o percnetual dentro de um gráfico através do JFreeChart. So que eu não estou acertado passar o objeto instanciado pra o objeto gerador de gráfico da classe gráfico. Como isso se faz, fazendo como estou agora não aparece nenhum aviso de erro, mas quando compila aparece: Exception in thread “main” java.lang.NullPointerException. Qual será o erro?
Aqui o codigo:
public class Grafico extends JFrame implements Serializable{
public DefaultPieDataset dados(Pretendentes p) throws IOException{
DefaultPieDataset votos= new DefaultPieDataset ();
for(int i=0;i<p.aspirantes.size();i++) {
votos.setValue(p.aspirantes.get(i).nome, p.aspirantes.get(i).getNum());}
return votos;
}
public void salvar(JFreeChart molde) throws IOException {
FileOutputStream registro = new FileOutputStream("result.jpg");
ChartUtilities.writeChartAsPNG(registro, molde, 900, 700);
}
public ChartFrame painel(DefaultPieDataset votos) throws IOException {
JFreeChart molde = ChartFactory.createPieChart("Resultado da eleição", votos);
ChartFrame forma = new ChartFrame("", molde);
salvar(molde);
add(forma);
return forma;
}
public Grafico() throws IOException {
setSize(950,720);
setTitle("GRÁFICO PIZZA");//Nome do gráfico
painel(dados(null));
setVisible(true);
}
public Grafico retorno() throws IOException {
return new Grafico();
}
}
//===========>>>>>>>CLASSE PRINCIPAL==>>
public class Principal implements Serializable {
public static void main(String[] args) throws IOException {
Scanner l = new Scanner(System.in);
Pretendentes p = new Pretendentes();
int m = 5;
Grafico g = new Grafico();
do {
Candidato c = new Candidato();
System.out.println("1 - cadastrar candidato:"+ "2 - listar candidatos"+ "3 - mostrar grafico");
m = l.nextInt();
switch(m) {
case 1: System.out.println("informe nome e numero de votos");
c.setNome(l.next());
c.setNum(l.nextInt());
p.adicionar(c);
break;
case 2:try {
p.listar();}catch(Exception e){
System.out.println("não tem nenhum candidato");}
break;
case 3: g.retorno();
break;
case 0: try {s.incluir(p);
System.out.println("Volte sempre que quiser!");
}catch(Exception e){System.out.println("nao deu pra salvar");}
break;
default: System.out.println("opcao invalida veva menu: ");
}
}while(m != 0);
}