Javafx线条颜色&字母'q'退出程序

时间:2016-03-20 03:51:50

标签: java javafx

我的任务的这部分工作并完成。我想补充一点,虽然我正在努力弄清楚从哪里开始。我想改变每个线条运动的颜色。例如,如果我按下箭头键,该行将为红色,或者右侧的行将为蓝色,等等。

我也试图通过单击字母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 个答案:

答案 0 :(得分:1)

要退出,您需要在case pane.setOnKeyPressed声明中添加另一个switch

所以:

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方法。