1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Como adicionar um Gráfico num JPanel ?

Boa tarde galera, estou querendo adicionar um gráfico num JPanel, mas não esta exibindo. O gráfico é gerado, mas na hora de exibir, nada! Com um JInternalFrame deu certo, mas o design não ficou muito legal, por isso estou tentando com um JPanel. Segue o código abaixo, pra vocês verem onde pode esta o erro.

private void btOkGraficoActionPerformed(java.awt.event.ActionEvent evt) {                                            
        if (JDCDataInicialGrafico.getDate() == null) {
            JOptionPane.showMessageDialog(this, "Informe a Data Inicial");
            JDCDataInicialGrafico.requestFocusInWindow();
        } else if (JDCDataFinalGrafico.getDate() == null) {
            JOptionPane.showMessageDialog(this, "Informe a Data Final");
            JDCDataFinalGrafico.requestFocusInWindow();
        } else {
            //Pegando a data informada nos campos de busca
            java.util.Date dataInicio = JDCDataInicialGrafico.getDate();
            java.util.Date dataFim = JDCDataFinalGrafico.getDate();

            // Gerando as linhas chaves do grafico...
            final String temperatura = "Temperatura ºC";
            final String umidade = "Umidade %";

            // criar o dataset...
            final DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            List<RegistroClimaBean> list = dao.getLista(java.sql.Date.valueOf(formatadorYMD.format(dataInicio)),
                    java.sql.Date.valueOf(formatadorYMD.format(dataFim)));
            int cont = 1;
            for (RegistroClimaBean percorre : list) {
                dataset.addValue(percorre.getTemperatura(), temperatura, percorre.getHora());
                dataset.addValue(percorre.getUmidade(), umidade, percorre.getHora());
                //System.out.println(dataset.getValue(temperatura, formatadorDMY.format(percorre.getData())) + " " + cont);
                //System.out.println(dataset.getValue(umidade, formatadorDMY.format(percorre.getData())) + " " + cont);
                System.out.println(cont);
                cont++;
            }
            // Criando o grafico...
            final JFreeChart chart = ChartFactory.createLineChart(
                    "Grafico de Temperatura e Umidade", // chart title
                    "Dias", // domain axis label
                    "Valores", // range axis label
                    dataset, // data
                    PlotOrientation.VERTICAL, // orientation
                    true, // include legend
                    true, // tooltips
                    false // urls
            );

            chart.addSubtitle(new TextTitle("Grafico de Temperatura e Umidade da cidade de Picos - PI"));
            chart.setBackgroundPaint(Color.white);

            final CategoryPlot plot = (CategoryPlot) chart.getPlot();
            plot.setBackgroundPaint(Color.lightGray);
            plot.setRangeGridlinePaint(Color.white);

            // personaliza o eixo gama ...
            final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();

            rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
            rangeAxis.setAutoRangeIncludesZero(true);

            //this.add(new ChartPanel(chart)); 

            //Essa é a parte que não sei direito, acho que o problema deve esta aqui
            jPanelGrafico.add((new ChartPanel(chart)));
            this.pack();
            jPanelGrafico.setVisible(true);

            //Esse trecho de codigo funciona no jInternalFrameGrafico
            /*jInternalFrameGrafico.setContentPane((new ChartPanel(chart)));
            jInternalFrameGrafico.pack();
            jInternalFrameGrafico.setVisible(true);*/
        }
    }

Janela Swing https://www.filepicker.io/api/file/q84J6ryfRfymWgkOwUVa

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java swing jfreechart ou faça a sua própria pergunta.