package applet; import java.applet.Applet; import java.awt.Button; import java.awt.Color; import java.awt.Label; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.InputMismatchException; public class BmiApplet extends Applet implements ActionListener { Label sinchouLabel; Label cmLabel; Label taijyuLabel; Label kgLabel; Label bmiLabel; TextField sinchouTextField; TextField taijyuTextField; TextField bmiTextField; Button bmiButton; Button clearButton; public void init() { // this.setBackground(Color.LIGHT_GRAY); sinchouLabel = new Label("身長"); add(sinchouLabel); sinchouTextField = new TextField(12); add(sinchouTextField); taijyuLabel = new Label("cm"); add(taijyuLabel); cmLabel = new Label("身長"); add(cmLabel); taijyuTextField = new TextField(12); add(taijyuTextField); kgLabel = new Label("kg"); add(kgLabel); bmiButton = new Button(" BMI計算 "); add(bmiButton); // アクションとの関連付け bmiButton.addActionListener(this); clearButton = new Button(" クリア "); add(clearButton); // アクションとの関連付け clearButton.addActionListener(this); bmiLabel = new Label("BMI値"); add(bmiLabel); bmiTextField = new TextField(15); add(bmiTextField); } @Override // ボタンクリック時の処理 public void actionPerformed(ActionEvent e) { // ボタンの識別 if (e.getSource() == bmiButton) { try { // BMIボタン押下時のアクション String h = sinchouTextField.getText(); String w = taijyuTextField.getText(); // 小数に変換 double hNum = Double.parseDouble(h); double wNum = Double.parseDouble(w); // 値の0以下はエラーにする if (hNum <= 0 || wNum <= 0) { // 入力ミスマッチ例外をスローする throw new InputMismatchException(); } // cm -> mに変換 hNum = hNum / 100; // BMI指数=体重(kg) ÷ {身長(m) X 身長(m)} double bmi = wNum / (hNum * hNum); // テキストフィールドにBMI値を表示 bmiTextField.setText(Math.round(bmi) + ""); } catch (NumberFormatException e1) { bmiTextField.setText("入力値が不適切!"); } catch (InputMismatchException e1) { bmiTextField.setText("正の数値を指定!"); } } else if (e.getSource() == clearButton) { // クリアボタン押下時のアクション bmiTextField.setText(""); sinchouTextField.setText(""); taijyuTextField.setText(""); } } }