Circle_Move_KeyEven2

  • Group root = new Group(label1, circle1);
    Scene scene = new Scene(root, 350, 200, Color.CORNSILK);
    // Create a MouseEvent filter
    // Create two EventHandlders
    moveShapeOnKeyPress(scene, circle1, label1);
     
  • Private method: Lambda Expression
    scene.setOnKeyPressed((KeyEvent event) -> {
           label1.setText(str1  );
            switch (event.getCode()) {
                case UP:    scircle.setCenterY(scircle.getCenterY() - deltaX);
 
Code:

package javafxtemplate1;

//import javafx.animation.TranslateTransition;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.event.EventType;
import javafx.scene.*;
import javafx.scene.control.Label;
import javafx.scene.input.*;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;
//port ExternalClass1; 

/**
 *
 * @author Manas14
 */

public class JavaFXTemplate1 extends Application {
   private static final double   deltaX = 5;
   String str1 ="", str2=""; 
   double orgSceneX, orgSceneY;
    double orgTranslateX, orgTranslateY;
      @Override
public void start(Stage primaryStage) {
 
      // final Circle circle = createCircle();
    Label label1 = new Label(str1);
    label1.setLayoutX(70); label1.setLayoutY(20);
    //circle constructor
    //setCenterX, setCenterY, setRadius
    Circle circle1 = new Circle(200, 150, 50, Color.GREEN);
    //final Group group = new Group(createInstructions(), circle);
  Group root = new Group(label1, circle1);
  Scene scene = new Scene(root, 350, 200, Color.CORNSILK);
    
moveShapeOnKeyPress(scene, circle1, label1);
//
   primaryStage.setTitle("Application"); 
  primaryStage.setScene(scene);
  primaryStage.show();
  }
  private void moveShapeOnKeyPress(Scene scene, final Circle scircle, Label label1) {
    scene.setOnKeyPressed((KeyEvent event) -> {
       label1.setText(str1  ); 
        switch (event.getCode()) {
            case UP:    scircle.setCenterY(scircle.getCenterY() - deltaX);
             str1="UP"; break;
            case RIGHT: scircle.setCenterX(scircle.getCenterX() + deltaX);
            label1.setText("RIGHT"); break;
            case DOWN:  scircle.setCenterY(scircle.getCenterY() + deltaX);
            label1.setText("DOWN"); break;
            case LEFT:  scircle.setCenterX(scircle.getCenterX() - deltaX);
            label1.setText("LEFT"); break;
                //    default: deltaX = 0 ; can't use as it is final
        }
    });
    
  }

    
     public static void main(String[] args) {
        launch(args);
    }
  
}


Runtime displays:

a) Default

b) Up Key

c) Left Key

 

d) down key