@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