2017-12-31 297 views
-1

JTextField의 모든 텍스트를 지우는 "Clear"라는 JButton이있는 BMI 계산기 프로젝트에서 작업 중입니다. feetText.setText(""); 시도했지만 작동하지 않았다. 내가 뭘 할 수 있을까?자바에서 JTextField 내부의 일반 텍스트

import java.awt.*; 
    import java.awt.event.*; 
    import javax.swing.*; 

    public class BMI extends JFrame implements ActionListener { 
     public static void main(String[] args) { 
      BMI runner = new BMI(); 
      runner.setSize(450, 600); 
      runner.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      runner.setVisible(true); 
     } 

     JTextField feetText, inchesText, weightText, waistText, neckText, hipsText; 
     JLabel feet, height,weightLabel, pounds, waist, neck, gender, maleLabel, femaleLabel; 
     JLabel inches, inches2, inches3, inches4, info1, info2, info3, info4; 
     JLabel activityLevel, sedentaryLabel, moderateLabel, activeLabel; 
     JLabel bmi, ratio, pbf, hips, lbm; 
     JRadioButton male, female, sedentary, moderate, active; 
     JPanel panel1, panel2, panel3, panel4, panel5, panel6, panel7, panel8; 
     JPanel panel9, panel10, panel11, panel12, panel13, panel14, panel15; 
     JButton clear, calculate; 
     Font font, font2, font3, font4; 
     double getBMI; 
     double roundedWTHR; 
     JLabel one, two; 

     public BMI() { 
      JFrame f = new JFrame("BMI and Body Fat Calculator"); 
      f.setSize(450, 600); 
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

      //Initialize the panels and set their layout 

      panel1 = new JPanel(); 
      panel1.setLayout(new FlowLayout()); 
      panel2 = new JPanel(); 
      panel2.setLayout(new FlowLayout()); 
      panel3 = new JPanel(); 
      panel3.setLayout(new FlowLayout()); 
      panel4 = new JPanel(); 
      panel4.setLayout(new FlowLayout()); 
      panel5 = new JPanel(); 
      panel5.setLayout(new FlowLayout()); 
      panel6 = new JPanel(); 
      panel6.setLayout(new FlowLayout()); 
      panel7 = new JPanel(); 
      panel7.setLayout(new FlowLayout()); 
      panel8 = new JPanel(); 
      panel8.setLayout(new FlowLayout()); 
      panel9 = new JPanel(); 
      panel9.setLayout(new FlowLayout()); 
      panel10 = new JPanel(); 
      panel10.setLayout(new FlowLayout()); 
      panel11 = new JPanel(); 
      panel11.setLayout(new FlowLayout()); 
      panel12 = new JPanel(); 
      panel12.setLayout(new FlowLayout()); 
      panel13 = new JPanel(); 
      panel13.setLayout(new FlowLayout()); 
      panel14 = new JPanel(); 
      panel14.setLayout(new FlowLayout()); 
      panel15 = new JPanel(); 
      panel15.setLayout(new FlowLayout()); 

      //Height 
      height = new JLabel("Height: "); 
      feetText = new JTextField(10); 
      feet = new JLabel(" Feet"); 
      inchesText = new JTextField(10); 
      inches = new JLabel("inches"); 

      feetText.setActionCommand("height"); 
      feetText.addActionListener(this); 

      //Weight 
      weightLabel = new JLabel("Weight: "); 
      weightText = new JTextField(10); 
      pounds = new JLabel(" pounds"); 

      //Waist 
      waist = new JLabel("Waist: "); 
      waistText = new JTextField(10); 
      inches2 = new JLabel("inches"); 

      //Neck 
      neck = new JLabel("Neck: "); 
      neckText = new JTextField(10); 
      inches3 = new JLabel("inches"); 

      //Hips 
      JLabel hips = new JLabel("Hips (Female): "); 
      hipsText = new JTextField(10);  
      inches4 = new JLabel("inches"); 

      //Gender 
      gender = new JLabel("Sex: "); 
      male = new JRadioButton(); 
      maleLabel = new JLabel("Male"); 
      female = new JRadioButton(); 
      femaleLabel = new JLabel("Female"); 

      //Level of activity 
      activityLevel = new JLabel("Level of Activity: "); 
      sedentary = new JRadioButton(); 
      sedentaryLabel = new JLabel("Sedentary"); 
      moderate = new JRadioButton(); 
      moderateLabel = new JLabel("Moderate"); 
      active = new JRadioButton(); 
      activeLabel = new JLabel("Active"); 

      //Clear and Calculate 
      clear = new JButton("Clear"); 
      calculate = new JButton("Calculate"); 

      calculate.addActionListener(this); 
      clear.setActionCommand("clear"); 

      //Body Mass Index 
      bmi = new JLabel("Body Mass Index: "); 
      font = new Font("Arial Black", Font.BOLD,12); 
      bmi.setFont(font); 

      //Waist-To-Height Ratio 
      ratio = new JLabel("Waist-To-Height Ratio: "); 
      font2 = new Font("Arial Black", Font.BOLD,12); 
      ratio.setFont(font2); 

      //Percentage Body Fat 
      pbf = new JLabel("Percentage Body Fat: "); 
      font3 = new Font("Arial Black", Font.BOLD,12); 
      pbf.setFont(font3); 

      //Lean Body Mass 
      lbm = new JLabel("Lean Body Mass: "); 
      font4 = new Font("Arial Black", Font.BOLD,12); 
      lbm.setFont(font4); 

      //Information 1 
      info1 = new JLabel(""); 

      //Information 2 
      info2 = new JLabel(""); 

      //Information 3 
      info3 = new JLabel(""); 

      //Information 4 
      info4 = new JLabel(""); 

      //Adding components to panel1 
      panel1.add(height); 
      panel1.add(feetText); 
      panel1.add(feet); 
      panel1.add(inchesText); 
      panel1.add(inches); 

      //Adding components to panel2 
      panel2.add(weightLabel); 
      panel2.add(weightText); 
      panel2.add(pounds); 

      //Adding components to panel3 
      panel3.add(waist); 
      panel3.add(waistText); 
      panel3.add(inches2); 

      //Adding components to panel4 
      panel4.add(neck); 
      panel4.add(neckText); 
      panel4.add(inches3); 

      //Adding components to panel5 
      panel5.add(hips); 
      panel5.add(hipsText); 
      panel5.add(inches4); 

      //Adding components to panel6 
      panel6.add(gender); 
      panel6.add(male); 
      panel6.add(maleLabel); 
      panel6.add(female); 
      panel6.add(femaleLabel); 

      /*The following code prohibits selecting 
      both the JRadioButtons selected at the same time*/ 

      ButtonGroup genderGroup = new ButtonGroup(); 
      genderGroup.add(male); 
      genderGroup.add(female); 

      //Adding components to panel7 
      panel7.add(activityLevel); 
      panel7.add(sedentary); 
      panel7.add(sedentaryLabel); 
      panel7.add(moderate); 
      panel7.add(moderateLabel); 
      panel7.add(active); 
      panel7.add(activeLabel); 

      /*The following code prohibits selecting 
      both the JRadioButtons selected at the same time*/ 

      ButtonGroup activityGroup = new ButtonGroup(); 
      activityGroup.add(sedentary); 
      activityGroup.add(moderate); 
      activityGroup.add(active); 

      //Adding components to panel8 
      panel8.add(clear); 
      panel8.add(calculate); 

      //Adding a component to panel9 
      panel9.add(bmi); 

      //Adding a component to panel10 
      panel10.add(ratio); 

      //Adding a component to panel11 
      panel11.add(pbf); 

      //Adding a component to panel12 
      panel12.add(lbm); 

      //Adding components to panel13 
      panel13.add(info1); 
      panel13.add(info2); 

      //Adding components to panel14 
      panel14.add(info3); 

      //Adding components to panel15 
      panel15.add(info4); 

      //Set the layout 
      BoxLayout boxLayout = new BoxLayout(getContentPane(), BoxLayout.Y_AXIS); 
      setLayout(boxLayout); 

      //Adding panels to the frame 
      add(panel1); 
      add(panel2); 
      add(panel3); 
      add(panel4); 
      add(panel5); 
      add(panel6); 
      add(panel7); 
      add(panel8); 
      add(panel9); 
      add(panel10); 
      add(panel11); 
      add(panel12); 
      add(panel13); 
      add(panel14); 
      add(panel15); 

      setVisible(true); 
     } 

     public void actionPerformed(ActionEvent event) { 
      double feet = Double.parseDouble(feetText.getText()); 
      double inches = Double.parseDouble(inchesText.getText()); 
      double weight = Double.parseDouble(weightText.getText()); 
      double waist = Double.parseDouble(waistText.getText()); 
      double neck = Double.parseDouble(neckText.getText()); 
      double hip = Double.parseDouble(hipsText.getText()); 

      double heightInInches = (feet * 12) + inches; 
      double heightInCm = (feet * 30.48) + (inches * 2.54); 

      if(event.getActionCommand().equals("clear")) { 
      feetText.setText(""); 
      } 

      //Calculating the Percentage Body Fat 
      if(male.isSelected()) { 
      double percentageBodyFat = 495/1.0324 - 0.19077 * (Math.log10(waist*2.54 - neck*2.54)) + 0.15456 * (Math.log10(feet*12*2.54 + inches*2.54)) - 450; 
      double pbfRounded = Math.round(percentageBodyFat * 10.0)/10.0; 
      pbf.setText("Percent Body Fat: " + pbfRounded); 
      } 

      if(female.isSelected()) { 
      double percentageBodyFat = (495/(1.29579-0.35004*Math.log10(waist*2.54+hip*2.54-neck*2.54) + 0.22100 * Math.log10(feet*12*2.54 + inches*2.54))-450); 
      double pbfRounded = Math.round(percentageBodyFat * 10.0)/10.0; 
      double bodyFatPercent = pbfRounded; 
      pbf.setText("Percent Body Fat: " + pbfRounded + "%"); 
      } 

      //Calculating the Body Mass Index 
      double bodyMassIndex = Math.round(703 * (weight/(heightInInches*heightInInches)*10.0))/10.0; 
      double getBMI = bodyMassIndex; 
      bmi.setText("Body Mass Index: " + bodyMassIndex + " kg/m²"); 

      //Calculating the Waist-To-Height Ratio 
      double wthr = waist/heightInInches; 
      double roundedWTHR = Math.round(wthr * 100.0)/100.0; 
      ratio.setText("Waist-To-Height Ratio: " + roundedWTHR); 

      //Calculating the Lean Body Mass 
      if(male.isSelected()) { 
      double leanBodyMass = (0.32810 * weight) + (0.33929 * heightInCm) - 29.5336; 
      double lbmRounded = Math.round(leanBodyMass * 10.0)/10.0; 
      lbm.setText("Lean Body Mass: " + lbmRounded + "lb"); 
      } 

      if(female.isSelected()) { 
      double leanBodyMass = (0.29569 * weight) + (0.41813 * heightInCm) - 43.2933; 
      double lbmRounded = Math.round(leanBodyMass * 10.0)/10.0; 
      lbm.setText("Lean Body Mass: " + lbmRounded + "lb"); 
      } 

      if(getBMI < 15) { 
      info1.setText("Your Bmi is severly low"); 
      info3.setText("You are severly underweight probably due to usual mass distributiuon"); 
      } else if(getBMI <= 16) { 
      info1.setText("Your Bmi is extremely low"); 
      info3.setText("You are extremely underweight probably due to usual mass distribution"); 
      } else if(getBMI <= 18.5) { 
      info1.setText("Your BMI is lower than usual"); 
      info3.setText("You may be underweight probably due to usual mass distribution"); 
      } else if(getBMI <= 25) { 
      info1.setText("Your BMI is normal"); 
      info3.setText("Your weight and mass distribution is normal"); 
      } else if(getBMI <= 30) { 
      info1.setText("Your BMI is greater than normal"); 
      info3.setText("You may be overweight or have unusual mass distribution"); 
      } else if(getBMI <=35) { 
      info1.setText("Your BMI is very much greater than normal"); 
      info3.setText("You are overweight or have unusual mass distribution"); 
      } else if(getBMI <= 39.9) { 
      info1.setText("Your BMI is severly greater than normal"); 
      info3.setText("You are extremely overweight or have unusual mass distribution"); 
      } else if(getBMI >= 40) { 
      info1.setText("Your BMI is extremely greater than normal"); 
      info3.setText("You are severly overweight or have unusual mass distribution"); 
      } 

      if(male.isSelected() && roundedWTHR < 0.35) { 
      info2.setText("and your weight-to-height ratio is severly low"); 
      } 
      else if(male.isSelected() && roundedWTHR <= 0.43) { 
      info2.setText("and your weight-to-height ratio is extremely low"); 
      } 
      else if(male.isSelected() && roundedWTHR <= 0.46) { 
      info2.setText("and your weight-to-height ratio is lower than normal"); 
      } 
      else if(male.isSelected() && roundedWTHR <= 0.53) { 
      info2.setText("but your weight-to-height ratio is normal"); 
      } 
      else if(male.isSelected() && roundedWTHR <= 0.58) { 
      info2.setText("and your weight-to-height ratio is a little higher than usual"); 
      } 
      else if(male.isSelected() && roundedWTHR <= 0.63) { 
      info2.setText("and your weight-to-height ratio is extremely higher than normal"); 
      } 
      else if(male.isSelected() && roundedWTHR > 0.63) { 
      info2.setText("and your weight-to-height ratio is severly higher than normal"); 
      } 

      if(female.isSelected() && roundedWTHR < 0.35) { 
      info2.setText("and your weight-to-height ratio is severly low"); 
      } 
      else if(female.isSelected() && roundedWTHR <= 0.42) { 
      info2.setText("and your weight-to-height ratio is extremely low"); 
      } 
      else if(female.isSelected() && roundedWTHR <= 0.46) { 
      info2.setText("and your weight-to-height ratio is lower than normal"); 
      } 
      else if(female.isSelected() && roundedWTHR <= 0.49) { 
      info2.setText("but your weight-to-height ratio is normal"); 
      } 
      else if(female.isSelected() && roundedWTHR <= 0.54) { 
      info2.setText("and your weight-to-height ratio is a little higher than usual"); 
      } 
      else if(female.isSelected() && roundedWTHR <= 0.58) { 
      info2.setText("and your weight-to-height ratio is extremely higher than normal"); 
      } 
      else if(female.isSelected() && roundedWTHR > 0.58) { 
      info2.setText("and your weight-to-height ratio is severly higher than normal"); 
      } 

      if(sedentary.isSelected()) { 
      info4.setText("Your diet should contain at least " + Math.round(0.36*weight) + " grams of protein per day."); 
      } 

      if(moderate.isSelected()) { 
      info4.setText("Your diet should contain at least " + Math.round(0.4*weight) + " grams of protein per day."); 
      } 

      if(active.isSelected()) { 
      info4.setText("Your diet should contain at least " + Math.round(0.5*weight) + " grams of protein per day."); 
      } 
     } 
    } 
+2

'feetText.setText ("");'**는 ** 작동해야합니다. 그렇지 않으면 디버깅을해야합니다. 보십시오 [작은 프로그램을 디버깅하는 방법] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/). 직접적인 문제는 해결되지 않지만 직접 해결할 수있는 단계를 제공합니다. 문제가 해결되지 않을 경우에도 문제를 격리하여 문제를 해결할 수 있도록 도와줍니다. 더 집중하고 대답하기 쉽다. –

답변

-2

전혀 신경 쓰지 않았습니다. 내 코드에 clear.addActionListener(this);을 추가하는 것을 잊어 버렸지 만 지금은 추가 했으므로 작동했습니다!

+1

이와 같은 질문에는 대답하지 마십시오. 질문을 삭제하면 다른 사람을 돕지 않을 것입니다. –

+0

당신이 당신의 의견을 쓸 때 왜 사람들은 항상 그렇게 의미합니까? –

+0

위의 내 의견이 어떤 의미인지 설명해주십시오. 이 사이트는 도움말 사이트는 아니지만 질의 응답 사이트입니다. 귀하의 질문이이 사이트의 미래 방문자에게 도움이되지 않는다면 삭제되어야합니다. 나는 어떤 방식 으로든 당신을 개인적으로 비방하지 않고, 미래의 방문객을위한이 질문의 유용성을 말합니다. 호세의 대답에 관해서는, 글쎄, 그것은 단순히 잘못된 것입니다. –

-3

feetText.setText (null);

시도해주세요.

+0

나쁜 생각. 'setText ("")'가 작동하지 않으면, 이것은 작동하지 않을 것이다. –