2017-01-26 3 views
-3

私は3つのボタン - 赤、黄、緑を持っています。ユーザーは、赤色から緑色の順にクリックする必要があります。これが起こった場合、「OK」と表示され、そうでない場合、「間違っている」などと表示されます。クリック注文を正しく取得する方法がわからないため、私は立ち往生しています。JavaFXのボタンをクリックしてください

これは私の今のところですが、正しく動作しません。

@Override 
public void start(Stage primaryStage) { 

    VBox root = new VBox(); 

    Button b1 = new Button("Red"); 
    Button b2 = new Button("Yellow"); 
    Button b3 = new Button("Green"); 

    root.getChildren().add(b1); 
    root.getChildren().add(b2); 
    root.getChildren().add(b3); 

    Scene scene = new Scene(root); 

    primaryStage.setTitle("Traffic"); 
    primaryStage.setScene(scene); 
    primaryStage.sizeToScene(); 
    primaryStage.show(); 

    b1.setOnAction((ActionEvent t) -> { 
     b2.setOnAction((ActionEvent t1) -> { 
      b3.setOnAction((ActionEvent t2) -> { 
       System.out.println("OK"); 
      }); 
     }); 
    }); 

} 
+0

あなたは私たちが助けることができるようにしようとしているコードを入力してください。 – Swagin9

答えて

1

ジャストボタンが次となっているトラックを保持:

private Button nextButton ; 

@Override 
public void start(Stage primaryStage) { 

    VBox root = new VBox(); 

    Button b1 = new Button("Red"); 
    Button b2 = new Button("Yellow"); 
    Button b3 = new Button("Green"); 

    nextButton = b1 ; 

    root.getChildren().add(b1); 
    root.getChildren().add(b2); 
    root.getChildren().add(b3); 

    Scene scene = new Scene(root); 

    primaryStage.setTitle("Traffic"); 
    primaryStage.setScene(scene); 
    primaryStage.sizeToScene(); 
    primaryStage.show(); 

    b1.setOnAction((ActionEvent t) -> { 
     if (nextButton==b1) { 
      nextButton=b2 ; 
     } else { 
      System.out.println("Wrong"); 
     } 
    }); 

    b2.setOnAction((ActionEvent t1) -> { 
     // etc 
    }); 

    b3.setOnAction((ActionEvent t2) -> { 
     // etc 
    }); 

} 
+0

ああ、私は何について考えていたのですか?もちろん!ありがとう。 – Johnny

1

3つのブール変数を各ボタンに1つずつ作成します。
例:redButtonPressed、yellowButtonPressed、greenButtonPressed。
すべてはfalseに初期化されます。

次に、赤いボタンを押すと、redButtonPressedをtrueに設定します。

if (redButtonPressed){ 
yellowButtonPressed = true; 
} else { 
print "Wrong!"; 
} 

と緑のボタンのために、それが押された場合:

if(redButtonPressed && yellowButtonPressed){ 
print "OK"; 
} else { 
print "Wrong!"; 
} 

あなたは私が考えるfalseにすべてのboolsを設定する必要があり、「間違った」印刷した後、黄色のボタンが押された 。

+0

私はそれを印刷する必要があります。 – Johnny

+0

私は答えを編集しました。あなたが今あなたを助けるかどうかを確認してください。 – anodyna

関連する問題