繁体   English   中英

使用箭头键移动圆-Java

[英]Move a circle using arrow keys - Java

我现在正在尝试JavaFX,教自己如何使用箭头键移动文本和项目。 我编写了一个程序,如果按下箭头键,该程序仅在舞台上移动文本。

我想绕着窗格而不是文字绕圈移动。 要使用箭头键移动圆圈,必须进行哪些更改?

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();
    }
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;
    }
});

就个人而言,我将更改您在哪里聆听按键。 我将其放在“窗格”上,因为在此示例中始终将其作为焦点。 除此之外,如果您不希望最后一个停留,则可能必须删除并阅读圆圈,我不在电脑旁,所以我无法确认这一点,但是结果代码如下所示。

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();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM