我已经建立了一个计算体重指数的程序。进行计算的方法是 BMI_Calculator 中的 bmi_calculator(); 。我还构建了一个GUI,但没有拖放调色板中的元素,但我自己编写了代码。 GUI在类 BMI_GUI
中用户写入权重和长度,然后单击按钮Calculate,结果必须显示在文本字段(jresult)中。但它不起作用。 这是我的代码:
public class BMI_Calculator extends BMI_GUI{
public void bmi_calculator(){
try{
//Text aus dem Textfeld lesen
String sgewicht= getGewicht().getText();
String skorpergrosse= getKorpergrosse().getText();
String salter= getAlter().getText();
//String in Double umwandeln
Double gewicht = Double.valueOf(sgewicht);
Double korpergrosse = Double.valueOf(skorpergrosse);
Double alter = Double.valueOf(salter);
//Rechnen Formula
Double result=gewicht/(korpergrosse*korpergrosse);
//Ergebniss in String umwandeln
String sresult= result.toString();
// Ergbnis in das Textfeld Calculate schreiben
getResult().setText(sresult);
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Das ist ein Error");
}
}
public void jButtonActionPerformed(){
if (jButton.getModel().isPressed()) {
bmi_calculator();
}
}
}
另一个课程是:
public class BMI_GUI extends JFrame {
JPanel jpMain,jpFooter;
JLabel jTitle,jGewicht, jKorpergrosse, jAlter;
private JTextField jgew;
private JTextField jkor;
private JTextField jalt;
private JTextField jresult;
JButton jButton;
JButton jButton2;
JButton jButton3;
public BMI_GUI(){
init();
}
private void init(){
//Fenstergrosse bestimmen
this.setSize(500,400);
//fenster in der mitte darstellen
this.setLocationRelativeTo(null);
//fenster schliessen mit X
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
// fenster title festlegen
this.setTitle("Body Mass Index");
//verhinder dass benutzer fenster grosser kleiner machen kann
this.setResizable(false);
jpMain=new JPanel();
jpMain.setLayout(null);
//than comes the code per JLabels and JTextFields for weight,
// height and age
jButton=new JButton("Calculate");
jButton.setLocation(130,210);
jButton.setSize(110,20);
jresult=new JTextField();
jresult.setSize(60,20);
jresult.setLocation(270,210);
//Komponenten dem Panel hinzufugen
jpMain.add(jTitle);
jpMain.add(jGewicht);
jpMain.add(jKorpergrosse);
jpMain.add(jAlter);
jpMain.add(jgew);
jpMain.add(jkor);
jpMain.add(jalt);
jpMain.add(jresult);
jpMain.add(jButton);
jpMain.add(jButton2);
jpMain.add(jButton3);
//panels zum fenster hinzufugen
this.add(jpMain);
//this.add(jpFooter);
}
//Set- und GET Methode
public JTextField getGewicht(){
return this.jgew;
}
public void setGewicht(JTextField jgew){
this.jgew=jgew;
}
public JTextField getKorpergrosse(){
return this.jkor;
}
public void setKorpergrosse(JTextField jkor){
this.jkor=jkor;
}
public JTextField getAlter(){
return this.jalt;
}
public void setAlter(JTextField jalt){
this.jalt=jalt;
}
public JTextField getResult(){
return this.jresult;
}
public void setResult(JTextField jresult){
this.jresult=jresult;
}
public static void main(String [] args){
new BMI_GUI().setVisible(true);
}
}
答案 0 :(得分:1)
您未在JButton
注册ActionListener
。
jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
System.out.println("guten tag");
}
});
(您无需检查JButton
模型以检查是否单击了该按钮。如果单击该按钮,将调用此方法。)
另请参阅此链接:How do you add an ActionListener onto a JButton in Java