SeriesDiarias.VisualizadorSeries.java Source code

Java tutorial

Introduction

Here is the source code for SeriesDiarias.VisualizadorSeries.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package SeriesDiarias;

import SeriesDiarias.SerieDadosDiarios;
import java.awt.Dimension;
import java.util.List;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

/**
 * Tela para visualizao de uma Srie de Dados Dirios.
 * 
 * Para usar a classe crie o visualizador passando a srie a ser exibida e, em
 * seguida, chame o mtodo exibir.
 * 
 * Usa a biblioteca JFreeChart para exibir um grfico de linha mostrando os dados
 * da srie. Obs: a janela  posicionada aleatoriamente na tela.
 * 
 * @author julio
 */
public class VisualizadorSeries {
    // Janela que contm o grfico
    private ApplicationFrame janela;

    /**
     * Constri a visualizao dos dados. Cria a janela e o grfico a ser exibido
     * nela.
     * 
     * @param serieDados A srie de dados que ter seus dados exibidos em um grfico
     */
    public VisualizadorSeries(SerieDadosDiarios serieDados) {
        // cria a janela
        janela = new ApplicationFrame("Visualizador Series Diarias");
        janela.setDefaultCloseOperation(ApplicationFrame.EXIT_ON_CLOSE);

        // cria o grfico que contm os dados da srie
        JFreeChart graficoLinha = ChartFactory.createLineChart(serieDados.obterIdentificacaoSerie(), // Ttulo do grfico
                "Dia", // Nome do eixo X
                "Valor", // Nome do eixo Y
                criarDataset(serieDados), // mtodo que cria os dados do grfico
                PlotOrientation.VERTICAL, // Orientao do grfico
                true, true, false); // legenda, tooltips, urls

        // adiciona o grfico na janela
        ChartPanel painelGrafico = new ChartPanel(graficoLinha);
        painelGrafico.setPreferredSize(new Dimension(600, 400));
        janela.setContentPane(painelGrafico);
        janela.pack();

        // posiciona a janela aleatoriamente na tela
        RefineryUtilities.positionFrameRandomly(janela);
    }

    /**
     * Exibe a janela com o grfico
     */
    public void exibir() {
        janela.setVisible(true);
    }

    /**
     * Mtodo interno que cria o conjunto de dados do grfico
     * 
     * @param serieDados Srie de dados que ter o grfico exibido.
     * @return Retorna o conjunto de dados (dataset) do grfico.
     */
    private DefaultCategoryDataset criarDataset(SerieDadosDiarios serieDados) {
        DefaultCategoryDataset dataset = new DefaultCategoryDataset();

        // para cada dia do grfico adiciona um valor no conjunto de dados       
        for (int dia = serieDados.obterDiaInicial(); dia <= serieDados.obterDiaFinal(); dia++) {

            dataset.addValue(serieDados.obterDado(dia), serieDados.obterIdentificacaoSerie(),
                    Integer.toString(dia));
        }

        return dataset;
    }
}