2016-03-20 2 views
0

私の割り当てのこの部分は動作し、完了です。私はこれを追加したいと思っていましたが、どこから始めたらいいか分かりません。私は各ラインの動きの色を変えたいと思っていました。たとえば、矢印キーを押した場合、行は赤色になるか、右に行が青色になります。プログラムを終了するためのJavafx線の色と文字 'q'

qをクリックしてプログラムを終了しようとしています。終了するには

package derienzo15; 

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.layout.Pane; 
import javafx.scene.shape.Line; 
import javafx.scene.paint.Color; 
import javafx.stage.Stage; 


public class DrawLines extends Application { 

    Pane pane = new Pane(); 
    double width = 1000; 
    double height = 1000; 
    double cX = width/2; 
    double cY = height/2; 

    @Override 
    public void start(Stage primaryStage) { 


     pane.setOnKeyPressed(e -> { 
      switch (e.getCode()) { 
       case UP: moveUp(); break; 
       case DOWN: moveDown(); break; 
       case LEFT: moveLeft(); break; 
       case RIGHT: moveRight(); break; 
      } 
     }); 

     primaryStage.setScene(new Scene(pane, width, height)); 
     primaryStage.setTitle("Click to see position.."); 
     primaryStage.show(); 
     pane.requestFocus(); 
    } 

    private void moveUp() { 
     pane.getChildren().add(new Line(cX, cY, cX, cY - 10)); 
     cY -= 10; 



    } 

    private void moveDown() { 
     pane.getChildren().add(new Line(cX, cY, cX, cY + 10)); 
     cY += 10; 

    } 
    private void moveLeft() { 
     pane.getChildren().add(new Line(cX, cY, cX - 10, cY)); 
     cX -= 10; 

    } 
    private void moveRight() { 
     pane.getChildren().add(new Line(cX, cY, cX + 10, cY)); 
     cX += 10; 
    } 



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

答えて

1

、あなたのpane.setOnKeyPressedswitchステートメントに別のcaseを追加する必要があります。だから、

pane.setOnKeyPressed(e -> { 
    switch (e.getCode()) { 
     case UP: moveUp(); break; 
     case DOWN: moveDown(); break; 
     case LEFT: moveLeft(); break; 
     case RIGHT: moveRight(); break; 
     case Q: primaryStage.close(); break; 
    } 
}); 

を変更する必要があり線の色を変更するには、あなたのfunctionsは、矢印キーを押したときに解雇。線の色を変更するには、setStrokeを使用します。

private void moveUp() { 
    Line line = new Line(cX, cY, cX, cY - 10); 
    line.setStroke(Color.BLUE); 
    pane.getChildren().add(line); 
    cY -= 10; 
} 

あなたは、私が独自の行にラインオブジェクトの作成を入れ注意しますので、あなたはsetStrokeメソッドを実行することができます。

関連する問題