我的任务的这部分工作并完成。我想补充一点,虽然我正在努力弄清楚从哪里开始。我想改变每个线条运动的颜色。例如,如果我按下箭头键,该行将为红色,或者右侧的行将为蓝色,等等。
我也试图通过单击字母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);
}
}
答案 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
方法。