Mas ao carregar no Calcular ele faz a atribuição de valores às variáveis que estavam definidas como 0.
Vejam o código:
Ficheiro gui.java (main)
[code]import java.awt.;
import java.awt.event.;
import javax.swing.*;
public class gui {
static JFrame janela = new JFrame();
static JButton calc = new JButton(“Calcular”);
static JRadioButton m = new JRadioButton(“Masculino”);
static JRadioButton f = new JRadioButton(“Feminino”);
static ButtonGroup sex = new ButtonGroup();
static JLabel sexo = new JLabel("Sexo: ");
static JLabel idade = new JLabel("Idade: ");
static JLabel altura = new JLabel("Altura: ");
static JLabel altura2 = new JLabel(“Cm”);
static JLabel peso = new JLabel("Peso: ");
static JLabel peso2 = new JLabel(“Kg”);
static JTextField txidade = new JTextField();
static JTextField txaltura = new JTextField();
static JTextField txpeso = new JTextField();
public static void mostrar() {
// Criar e mostrar GUI
janela.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
janela.setLayout(null);
janela.setSize(255,215);
janela.setResizable(false);
janela.setLocationRelativeTo(null);
sex.add(m);
sex.add(f);
janela.getContentPane().add(m);
janela.getContentPane().add(f);
janela.getContentPane().add(sexo);
sexo.setBounds(10,10,50,15);
m.setBounds(50,10,100,15);
f.setBounds(50,30,100,15);
janela.getContentPane().add(idade);
janela.getContentPane().add(txidade);
idade.setBounds(10,65,50,15);
txidade.setBounds(55,65,32,20);
janela.getContentPane().add(altura);
janela.getContentPane().add(txaltura);
janela.getContentPane().add(altura2);
altura.setBounds(10,95,50,15);
txaltura.setBounds(55,95,32,20);
altura2.setBounds(90,97,50,15);
janela.getContentPane().add(peso);
janela.getContentPane().add(txpeso);
janela.getContentPane().add(peso2);
peso.setBounds(10,125,50,15);
txpeso.setBounds(55,125,45,20);
peso2.setBounds(103,127,100,15);
janela.getContentPane().add(calc);
calc.setBounds(150,150,90,30);
janela.setVisible(true);
}
public static void main(String args[]) {
mostrar();
MouseListener m1 = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
calcular.f1 = 4; // Para o homem
calcular.f2 = 66;
calcular.f3 = 13.7f;
calcular.f4 = 5.0f;
calcular.f5 = 6.8f;
}
};
m.addMouseListener(m1);
MouseListener m2 = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
calcular.f1 = 2; // Para Mulher
calcular.f2 = 665;
calcular.f3 = 9.5f;
calcular.f4 = 1.8f;
calcular.f5 = 4.7f;
}
};
f.addMouseListener(m2);
MouseListener m3 = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
calcular.calcular();
}
};
calc.addMouseListener(m3);
}
}
[/code]
Ficheiro calcular.java
[code]public class calcular {
public static int f1 = 0;
public static int f2 = 0;
public static float f3 = 0.0f;
public static float f4 = 0.0f;
public static float f5 = 0.0f;
public static float pesoid = 0.0f; // Peso ideal
public static float imc = 0.0f; // Indice de massa corporal
public static float neb = 0.0f; // Necessidades energeticas basais
//Peso ideal
public static void calcular() {
float altura = (Float.parseFloat(gui.txaltura.getText()));
float idade = (Float.parseFloat(gui.txidade.getText()));
float altura2 = (Float.parseFloat(gui.txaltura.getText())/100);
float peso = (Float.parseFloat(gui.txpeso.getText()));
float a = altura;
float i = idade;
float p = peso;
float a2 = altura2;
pesoid = (float) (a - 100 - ((a -150) / f1) + ((i-20) /4 ));
System.out.println(pesoid);
//IMC
imc = (float) ( § / (a2*a2) );
System.out.println(imc);
//Neb
neb = (f2 + (f3p) + (f4a) - (f5*i));
System.out.println(neb);
}
}
[/code]
Eu bem gostava de usar threads, mas não compreendo muito bem a matéria e a verdade é que não sei implementar, ou não compreendo a sua implementação, em aplicações. Sei do que se trata mas manipular threads é uma coisa que quero aprender á força. Também não sei se de facto seria necessário recorrer a threads para este caso…o problema só ocorre ás vezes e só na primeira execução.
Obrigado desde já 