检查Java程序中是否按下按钮不起作用

时间:2015-10-28 18:57:47

标签: java

我已经建立了一个计算体重指数的程序。进行计算的方法是 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);

}


}

1 个答案:

答案 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