Quantcast
Channel: GUJ - Tópicos com a tag java
Viewing all articles
Browse latest Browse all 17410

Como passar resultado de um calculo para um gráfico?

$
0
0

@GustavoSantosBr escreveu:

Eu estou com dúvida, quanto a maneira com a qual eu faço um gráfico receber valores e mudar de acordo com eles.

Eu quero que o meu gráfico mostre o percentual de massa gorda e magra, para isso eu devo passar o resultado de um cálculo, mais não sei como fazer isso.

Como eu pego o valor do calculo, e faço o gráfico receber ele? Assim, o gráfico vai mudar de acordo com esses valores. No meu caso esse valor vai ser a massa gorda e massa magra de uma pessoa.

No exemplo, eu coloquei apenas o calculo da massa gorda, no caso de ser necessário um valor para a % de massa magra, adicione um valor qualquer, apenas para fim explicativo, pois o problema não é como fazer o calculo.

o código:

package jfreechart;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.jfree.util.Rotation;

public class GraficoTeste extends JFrame 
{
    private static final long serialVersionUID = 1L;
    private  PieDataset dataset;
    private  JFreeChart grafico;
    private final JTextField altura = new JTextField();
    private final JTextField peso = new JTextField();
    private final JButton calcular = new JButton("Calcular");
    private final JLabel imc = new JLabel();
    private double calcMassas;

    public GraficoTeste() 
    {           
        setSize(500, 400);
        JPanel contentPane = new JPanel();        
        setContentPane(contentPane);
        contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
        add(colocaCampos());
        add(colocaGrafico());    
        acao();
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
    
    private void acao()
    {
        calcular.addActionListener(new ActionListener() 
        {   
            @Override
            public void actionPerformed(ActionEvent ae)
            { 
                calculo();
            }    
        });
    }
    
    public void calculo()
    {
        //Cálculo IMC.
        double alt = Double.parseDouble(altura.getText());
        double ps = Double.parseDouble(peso.getText());              
        double resultado = ps / ((alt)*(alt));
        imc.setText("O IMC é: " + resultado);
        //Cálculo Massa magra e gordura. ex: (1,20 x IMC) + (0,23 x idade) – (10,8 x sexo) – 5.4        
        calcMassas = (1.20 * resultado) + (0.23 * 20) - (10.8 * 1);
        System.out.println("Massa  - gordura: " + calcMassas);
    }
    
    public JComponent colocaCampos()
    {                
        JPanel painelCampo = new JPanel();      
        
        JLabel labelAltura = new JLabel("Altura:");
        painelCampo.add(labelAltura);
        painelCampo.add(altura);
        altura.setPreferredSize(new Dimension(100, 25));
        JLabel labelPeso = new JLabel("Peso:");
        painelCampo.add(labelPeso);
        painelCampo.add(peso);     
        peso.setPreferredSize(new Dimension(100, 25));
        painelCampo.add(calcular); 
        calcular.setPreferredSize(new Dimension(100, 23));
        return painelCampo;
    }
           
    public JComponent colocaGrafico()
    {                
        JPanel painelG = new JPanel();
               
        //cria o dataset
        dataset = criaDataset();
        //baseando no dataset criamos o gráfico
        grafico = criaGrafico(dataset, "");
        //insere o painel no gráfico
        ChartPanel painelGrafico = new ChartPanel(grafico);
        //tamanho padrão
        painelGrafico.setPreferredSize(new Dimension(400, 200));
        painelG.add(painelGrafico);
        painelG.add(imc);
        imc.setText("");        
        return painelG;
    }

    //cria um simples dataset
    private DefaultPieDataset criaDataset() 
    {
        DefaultPieDataset resultado = new DefaultPieDataset();        
        resultado.setValue("Vermelho", 20);
        resultado.setValue("Azul", 80);
        return resultado;
    }

    //cria o gráfico
    private JFreeChart criaGrafico(PieDataset dataset, String titulo) 
    {
        JFreeChart graf = ChartFactory.createPieChart3D(
                titulo, dataset, true, true, false);
        PiePlot3D enredo = (PiePlot3D) graf.getPlot();
        enredo.setStartAngle(290);
        enredo.setDirection(Rotation.CLOCKWISE);
        enredo.setForegroundAlpha(0.5f);
        return graf;
    }

    public static void main(String[] args) 
    {
      GraficoTeste t = new GraficoTeste();
      t.setVisible(true);      
    }
}

Mensagens: 3

Participantes: 2

Ler tópico completo


Viewing all articles
Browse latest Browse all 17410

Latest Images

Trending Articles

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>