2016-09-15 20 views
0

現在、矢印キーを使用してテキストやアイテムを移動する方法を自分で教えるJavaFXを試しています。私は、矢印キーが押されると、ステージ上でテキストを動かすだけのプログラムを作った。矢印キーを使用して円を移動する - Java

テキストの代わりにペインの周りを円で移動したいと考えています。矢印キーを使用して円を移動するには、どのような変更を行う必要がありますか?あなたは、キーが押されるのを聞いているところ

public void start(Stage primaryStage) { 
     Pane pane = new Pane(); 

     int dx = 50; 
     int dy = 50; 
     int radius = 125; 

     Circle circle = new Circle(radius,dx,dy); 
     Text text = new Text(20,20,"HI"); 
     circle.setFill(Color.WHITE); 
     circle.setStroke(Color.BLACK); 

     pane.getChildren().addAll(circle, text); 

     circle.setOnKeyPressed(e -> { 
      switch(e.getCode()) { 
      case DOWN: text.setY(text.getY() + 10); 
      break; 
      case UP: text.setY(text.getY() - 10); 
      break; 
      case LEFT: text.setX(text.getX() - 10); 
      break; 
      case RIGHT: text.setX(text.getX() + 10); 
      break; 
      default: 
       if(Character.isLetterOrDigit(e.getText().charAt(0))) 
        text.setText(e.getText()); 
      break;  
      } 
     }); 

     Scene scene = new Scene(pane, 250, 200); 
     primaryStage.setTitle("Arrow Keys"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 

     text.requestFocus(); 
    } 

答えて

2
scene.setOnKeyPressed(e -> { 
    switch (e.getCode()) { 
    case DOWN: 
     circle.setCenterY(circle.getCenterY() + 10); 
     break; 
    case UP: 
     circle.setCenterY(circle.getCenterY() - 10); 
     break; 
    case LEFT: 
     circle.setCenterX(circle.getCenterX() - 10); 
     break; 
    case RIGHT: 
     circle.setCenterX(circle.getCenterX() + 10); 
     break; 
    } 
}); 
0

個人的に、私は変化するであろう。私はそれをペインに置いています。なぜなら、この例では常に焦点が合っているからです。それ以外の場合は、最後のものを残したくない場合は、サークルを削除して読み込む必要があるかもしれません。私は自分のコンピュータではないので、これを確認することはできませんが、結果のコードはこのように見えます。

public void start(Stage primaryStage) { 
     Pane pane = new Pane(); 

     int dx = 50; 
     int dy = 50; 
     int radius = 125; 

     Circle circle = new Circle(radius,dx,dy); 
     Text text = new Text(20,20,"HI"); 
     circle.setFill(Color.WHITE); 
     circle.setStroke(Color.BLACK); 

     pane.getChildren().addAll(circle, text); 

     pane.setOnKeyPressed(e -> { 
      pane.getChildren().remove(circle); 
      switch(e.getCode()) { 
      case DOWN: circle.setCenterY(circle.getCenterY() + 10); 
      break; 
      case UP: circle.setCenterY(circle.getCenterY() - 10); 
      break; 
      case LEFT: circle.setCenterX(circle.getCenterX() + 10); 
      break; 
      case RIGHT: circle.setCenterX(circle.getCenterX() - 10); 
      break;  
      } 
      pane.getChildren().add(circle); 
     }); 

     Scene scene = new Scene(pane, 250, 200); 
     primaryStage.setTitle("Arrow Keys"); 
     primaryStage.setScene(scene); 
     primaryStage.show(); 
    } 
関連する問題