olá pessoal do GUJ , preciso da ajuda de voces nesse código , o objetivo desse código é mostrar o peso ideal da pessoa fazendo a equação que no meu caso não funciona(formula: peso - altura * altura)
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package calculamediaimc;
/**
*
* @author Fabio
*/
public class Calculamediaimc {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new JFrameMedia();
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package calculamediaimc;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
/**
*
* @author Fabio
*/
class Controlador implements ActionListener {
private JFrame view;
private JButton btCalcular;
private Double resultado;
private String situacao;
public Controlador(JFrame view) {
this.view = view;
}
@Override
public void actionPerformed(ActionEvent e) {
if(view instanceof JFrameMedia) {
JFrameMedia jfMedia = (JFrameMedia) view;
if(e.getSource() == jfMedia.getBtCalcular())
{
resultado = Double.valueOf(jfMedia.getPeso()) / Double.valueOf(jfMedia.getAltura()) * Double.valueOf(jfMedia.getAltura());
if(resultado <= 30) {
situacao = "Abaixo do Peso";
}
else {
situacao = "Acima do Peso";
}
JOptionPane.showMessageDialog(null,"IMC: " + resultado +"\n Situação: "+ situacao,"Janela",JOptionPane.INFORMATION_MESSAGE);
}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package calculamediaimc;
import javax.swing.*;
import java.awt.GridLayout;
import java.awt.BorderLayout;
/**
*
* @author Fabio
*/
public class JFrameMedia extends JFrame {
private JLabel lblPeso;
private JLabel lblAltura;
//private JLabel lblNota3;
private JTextField txtPeso;
private JTextField txtAltura;
//private JTextField txtNota3;
private JPanel jPanelCampos;
private JPanel jPanelBotoes;
private JButton btCalcular;
public JFrameMedia() {
initializate();
setSize(200, 140);
setVisible(true);
setResizable(true);
}
private void initializate() {
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Calculadora de Média");
this.setLayout(new BorderLayout());
this.add(getPanelCampos(), BorderLayout.NORTH);
this.add(getPanelBotoes(), BorderLayout.CENTER);
}
private JPanel getPanelCampos() {
if (jPanelCampos == null) {
jPanelCampos = new JPanel(new GridLayout(3, 2));
lblPeso = new JLabel("Digite Peso: ");
txtPeso = new JTextField(2);
lblAltura = new JLabel("Digite Altura: ");
txtAltura = new JTextField(2);
//lblNota3 = new JLabel("Digite Nota3: ");
//txtNota3 = new JTextField(2);
jPanelCampos.add(lblPeso);
jPanelCampos.add(txtPeso);
jPanelCampos.add(lblAltura);
jPanelCampos.add(txtAltura);
//jPanelCampos.add(lblNota3);
//jPanelCampos.add(txtNota3);
}
return jPanelCampos;
}
private JPanel getPanelBotoes() {
if (jPanelBotoes == null) {
jPanelBotoes = new JPanel(new GridLayout(1, 1));
btCalcular = new JButton("Calcular");
btCalcular.addActionListener(new Controlador(this));
jPanelBotoes.add(btCalcular);
}
return jPanelBotoes;
}
public String getPeso() {
return txtPeso.getText();
}
public String getAltura(){
return txtAltura.getText();
}
//public String getNota3(){
//return txtNota3.getText();
//}
public JButton getBtCalcular(){
return btCalcular;
}
}
package imc;
public class AppInit {
public static void main(String[] args) {
new CalculaIMC();
}
}
Altere como desejar … usei classe anônima como tratador de eventos, acho melhor que ficar usando e.getSource().
Outra alteração foi o uso de variáveis somente no escopo de função, uma vez que a informação necessária é a mensagem, não os valores.
package imc;
public class AppInit {
public static void main(String[] args) {
new CalculaIMC();
}
}
Altere como desejar … usei classe anônima como tratador de eventos, acho melhor que ficar usando e.getSource().
Outra alteração foi o uso de variáveis somente no escopo de função, uma vez que a informação necessária é a mensagem, não os valores.
Espero que ajude. Abraços![/quote]
O seu funciona pq vc está utilizando de modo correto, veja: