前提・実現したいこと
身長、体重を変更(入力)することでBMIとそれに対するメッセージから表示されるようにしたいのですが、
イベント処理以外を作ったところで実行すると以下のエラーが出ました。
発生している問題・エラーメッセージ
G.java:12: エラー: HBoxに適切なコンストラクタが見つかりません(HW3Pane2,HW3Pane2) HBox root = new HBox(hw3pane1, hw3pane2); ^ コンストラクタ HBox.HBox()は使用できません (実引数リストと仮引数リストの長さが異なります) コンストラクタ HBox.HBox(double)は使用できません (実引数リストと仮引数リストの長さが異なります) コンストラクタ HBox.HBox(Node...)は使用できません (可変引数の不一致: HW3Pane2をNodeに変換できません:) コンストラクタ HBox.HBox(double,Node...)は使用できません (引数の不一致: HW3Pane2をdoubleに変換できません:)
該当のソースコード
import文は省略
自分で書いている部分
java
1public class HW3Pane2{ 2 3 public HW3Pane2(){ 4 HW3 hw3 = new HW3(); 5 TextField tfn = new TextField(); 6 TextField tfh = new TextField(); 7 TextField tfw = new TextField(); 8 Label bmi = new Label(""); 9 Label Message = new Label(""); 10 GridPane pane = new GridPane(); 11 pane.setPrefSize(300,200); 12 tfn.setText(hw3.getName()); 13 tfh.setText(String.format("%.1f",hw3.getHeight())); 14 tfw.setText(String.format("%.1f",hw3.getWeight())); 15 bmi.setText(String.format("%.2f",hw3.calcBMI())); 16 Message.setText(hw3.getMessage(hw3.calcBMI())); 17 pane.addRow(0,new Label("名前"),tfn); 18 pane.addRow(1,new Label("身長(cm)"),tfh); 19 pane.addRow(2,new Label("体重(kg)"),tfw); 20 pane.addRow(3,new Label("BMI"),bmi); 21 pane.addRow(4,new Label("判定"),Message); 22 pane.setStyle("-fx-background-color: #87CEEB;"); 23 } 24}
与えられている部分
java
1public class G extends Application { 2 @Override 3 public void start(Stage pstage) { 4 HW3Pane2 hw3pane1 = new HW3Pane2(); 5 HW3Pane2 hw3pane2 = new HW3Pane2(); 6 HBox root = new HBox(hw3pane1, hw3pane2); 7 root.getStyleClass().add("myPane"); 8 Scene scene = new Scene(root); 9 scene.getStylesheets().add("hw3pane.css"); 10 pstage.setScene(scene); 11 pstage.setTitle("G14HW3"); 12 pstage.sizeToScene(); 13 pstage.show(); 14 } 15 public static void main(String[] args) { 16 launch(args); 17 } 18}
java
1public class HW3{ 2 3 private String name; 4 private double height; 5 private double weight; 6 7 public static double Border1=20; 8 public static double Border2=25; 9 10 public HW3(){ 11 this("ほげお" ,170.0 ,62.0); 12 } 13 public HW3(String n ,double h ,double w){ 14 this.name=n; 15 this.height=h; 16 this.weight=w; 17 } 18 public void setName(String n){ 19 this.name=n; 20 } 21 public void setHeight(double h){ 22 this.height=h; 23 } 24 public void setWeight(double w){ 25 this.weight=w; 26 } 27 public String getName(){ 28 return this.name; 29 } 30 public double getHeight(){ 31 return this.height; 32 } 33 public double getWeight(){ 34 return this.weight; 35 } 36 public double calcBMI(){ 37 return this.weight/((this.height/100)*(this.height/100)); 38 } 39 public static String getMessage(double bmi){ 40 if(bmi<Border1) 41 return "やせてんなぁ"; 42 else if (bmi<Border2) 43 return "ふつー"; 44 else 45 return "太ってる…かな?"; 46 } 47}
試したこと
SampleでのHW3クラス、Gクラスは実行可能でした。
javafx