gpt4 book ai didi

java - 在 JavaFX 中绘制节点

转载 作者:行者123 更新时间:2023-11-30 08:19:11 25 4
gpt4 key购买 nike

我试图通过创建用户去过的地方的踪迹来跟踪用户的 Activity 。我已经弄清楚了该程序的大部分方面,但我仍然困惑于如何保持用户在 Pane 上的移动。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class DrawLines extends Application {
@Override
public void start(Stage primaryStage) {

Pane pane = new Pane();
Text text = new Text(150, 150, ".");

pane.getChildren().add(text);
text.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());
}
});

// Create a scene and place the pane in the stage
Scene scene = new Scene(pane, 300, 300);
primaryStage.setTitle("Draw a Line!");
primaryStage.setScene(scene);
primaryStage.show();

text.requestFocus();
}

最佳答案

您需要创建一个新的文本并将其添加到每次用户移动的 Pane 中。只需创建一个新方法来处理此问题并为每个用户移动调用它即可。

private void leaveTrail(Pane pane, Text text){
Text newText = new Text(text.getText());
pane.getChildren().add(newText);
newText.setY(text.getY());
newText.setX(text.getX());
}

一个完整的工作示例:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class DrawLines extends Application {

@Override
public void start(Stage primaryStage) {

Pane pane = new Pane();
Text text = new Text(150, 150, ".");

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

// Create a scene and place the pane in the stage
Scene scene = new Scene(pane, 300, 300);
primaryStage.setTitle("Draw a Line!");
primaryStage.setScene(scene);
primaryStage.show();
text.requestFocus();
}

private void leaveTrail(Pane pane, Text text){
Text newText = new Text(text.getText());
pane.getChildren().add(newText);
newText.setY(text.getY());
newText.setX(text.getX());
}
public static void main(String[] args) {
launch(args);
}
}

示例图像

enter image description here

关于java - 在 JavaFX 中绘制节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29200401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com