Interface gráfica “Swing” , cálculo I.M.C

Olá  😀

Neste exemplo mostramos o uso de alguns itens do pacote Swing “javax.swing.*”,
este aplicativo tem a finalidade de calcular o Índice de Massa Corporal-IMC,
criamos 3 classe em um único arquivo “.java”, sendo:
1)GuiPrincipal = interface com usuário;
2)EventoCalculaIMC = evento para o botão calcular;
3)AplCalculaIMC = classe “Main” onde executa o aplicativo;

A seguir o código completo:

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

/**
 * classe é um Jframe interface com usuário
 * @author Roberto Silva
 */
class GuiPrincipal extends JFrame{
	//variaveis dos componentes
	private JTextField edtPeso;
	private JTextField edtAltura;
	private JButton btnCalcula;
	private JLabel lblPeso;
	private JLabel lblAltura;
	private JLabel lblResultado;

	/**
	 * construtor
	 */
	public GuiPrincipal(){
		//chamando metodo de configuração
		setConfig();
	}

	/**
	 * seto todas configurações do formulario
	 */
	private void setConfig() {
		//configuração do JFrame
		this.setTitle("Calcula IMC");//titulo
		this.setSize(600, 150);//tamanho do Jframe
		this.setLayout(new GridLayout(0, 2));//layout se comporta como uma tabela, mais detalhes: http://docs.oracle.com/javase/tutorial/uiswing/layout/grid.html
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);//fecha aplicação como padrão
		this.setLocationRelativeTo(null);//centraliza o JFrame
		this.getContentPane().setBackground(Color.YELLOW);//cor de fundo é amarelo
		
		//instanciando componentes
		edtPeso=new JTextField();
		edtAltura=new JTextField();
		btnCalcula=new JButton("Calcular");
		lblPeso=new JLabel("Peso:");
		lblAltura=new JLabel("Altura:");
		lblResultado=new JLabel("Resultado: ");
		
		//add evento ao botão de calculo
		btnCalcula.addActionListener(new EventoCalculaIMC());
		
		//add componentes ao Jframe
		this.add(lblPeso);
		this.add(lblAltura);
		this.add(edtPeso);
		this.add(edtAltura);
		this.add(lblResultado);
		this.add(btnCalcula);
	}

	/**
	 * classe interna é um evento para o botão de calculo
	 * @author Roberto Silva
	 */
	class EventoCalculaIMC implements ActionListener{
		@Override
		public void actionPerformed(ActionEvent e) {
			try {

				//converte string em double
				double peso=Double.parseDouble(edtPeso.getText());
				double altura=Double.parseDouble(edtAltura.getText());
				//calcula imc
				double imc=peso/Math.pow(altura,2);

				//objeto para formatar saida, com uma decimal
				DecimalFormat df=new DecimalFormat("#0.0");

				String resultado="Resultado: "+df.format(imc);
				
				//abaixo comparo valor do imc e concatena a string resultado
				if(imc < 18.5){
					resultado+=" Abaixo do peso";
				}
				else if(imc < 24.9){
					resultado+=" Peso ideal";
				}
				else if(imc < 29.9){
					resultado+=" Levemente acima do peso";
				}
				else if(imc < 34.9){
					resultado+=" Primeiro grau de obesidade";
				}
				else if(imc < 39.9){
					resultado+=" Segundo grau de obesidade";
				}
				else
					resultado+=" Obesidade mórbida";

				//seta texto em label
				lblResultado.setText(resultado);

			}catch (ArithmeticException ar) {
				JOptionPane.showMessageDialog(null, "Erro aritmético, causa: "+ar.getMessage());
			} catch (Exception ex) {
				JOptionPane.showMessageDialog(null, "Erro desconhecido, causa: "+ex.getMessage());
			}
		}
	}

}

/**
 * classe principal onde é executado o sistema
 * @author Roberto Silva
 */
public class AplCalculaIMC {
	public static void main(String[] args) {
		//instanciando e exibindo
		new GuiPrincipal().setVisible(true);
	}
}

Ao executar…
GUI_IMC

Espero que tenha gostado, até o próximo post 😉