import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.text.NumberFormat;
import javax.swing.JFormattedTextField;
import java.awt.Dimension;

public class MetaboCheck extends JFrame {
  double data1 = 170.5d;
  double data2 = 62.5d;
    
  JLabel label1 = new JLabel("・あなたの身長(cm)は>");
  JLabel label2 = new JLabel("・あなたの体重(Kg)は>");
  JLabel label3  = new JLabel("・あなたのBMI値は、");
  JLabel label4  = new JLabel("");
  JLabel label5  = new JLabel("・目標とするBMI値は、");
  JLabel label6  = new JLabel("22.0です。");
  JLabel label7  = new JLabel("・あなたの標準体重は、");
  JLabel label8  = new JLabel("");
  JLabel label9  = new JLabel("・摂取カロリーの目安は、");
  JLabel label10 = new JLabel("");
  
  //数値のみの入力を許すテキストフィールドを作成する(身長)
  NumberFormat nf1 = NumberFormat.getNumberInstance();
  JFormattedTextField text1 = new JFormattedTextField(nf1);
  
  //数値のみの入力を許すテキストフィールドを作成する(体重)
  NumberFormat nf2 = NumberFormat.getNumberInstance();
  JFormattedTextField text2 = new JFormattedTextField(nf2);
    
  public static void main(String args[]){
    MetaboCheck frame = new MetaboCheck("メタボチェック");
    frame.setVisible(true);
    frame.setResizable(false);
  }

  MetaboCheck(String title){
    setTitle(title);
    setBounds(100, 100, 320, 240);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel metaboPanel = new JPanel();
    metaboPanel.setLayout(new GridLayout(7, 2));
    
    //身長を代入する
    text1.setValue(Double.valueOf(data1));      
    nf1.setMaximumFractionDigits(1); //  小数点以下第一位 #####.#
    text1.setPreferredSize(new Dimension(120, 20));
    
    //体重を代入する
    text2.setValue(Double.valueOf(data2));
    nf2.setMaximumFractionDigits(1);
    text2.setPreferredSize(new Dimension(120, 20));
        
    JButton button1 = new JButton("計算");
    button1.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            double bmi;
            double weight;
            double data3 = Float.parseFloat(text1.getText());
            double data4 = Float.parseFloat(text2.getText());
                
            bmi = data4 / (data3 / 100.0f) / (data3 / 100.0f);
            bmi = Math.round(bmi * 10.0f);//小数点以下を四捨五入
            bmi = bmi / 10.0f;
                
            weight = (data3 / 100.0f) * (data3 / 100.0f) * 22.0f;
            weight = Math.round(weight * 10.0f);
            weight = weight / 10.0f;
                
            label4.setText( bmi + "です。");
            label8.setText( weight + "Kgです。");
                //摂取カロリーの目安は、標準体重×(25〜30)
            label10.setText( Math.round(weight * 27.5f) + "Kcalくらいです。");
        }
    });
    
    JButton button2 = new JButton("終了");
    button2.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            System.exit(0);
        }
    });
    
    metaboPanel.add(label1);
    metaboPanel.add(text1);
    metaboPanel.add(label2);
    metaboPanel.add(text2);
    
    metaboPanel.add(label3);
    metaboPanel.add(label4);
    metaboPanel.add(label5);
    metaboPanel.add(label6);
    metaboPanel.add(label7);
    metaboPanel.add(label8);
    metaboPanel.add(label9);
    metaboPanel.add(label10);
    
    metaboPanel.add(button1);
    metaboPanel.add(button2);

    Container metaboPane = getContentPane();
    metaboPane.add(metaboPanel, BorderLayout.CENTER);  
  }
}