gpt4 book ai didi

java - 使用 JavaFX 显示另一个场景 [场景图问题]

转载 作者:太空宇宙 更新时间:2023-11-04 14:52:37 26 4
gpt4 key购买 nike

我想在扩展 Scene 的类中绘制 Canvas 。当我按下场景上的按钮时,应该显示此场景,该场景是在扩展 Application 的类“GUI”中创建的。

问题:我不明白如何使用场景构造函数中的“parent”参数。所以我无法显示场景的内容。

当我使用时:

Scene gameScene = new GameScene(root,800,600);

我会收到错误,因为 root 已设置为另一个场景的 root。

使用游戏而不是 root,一切都可以正常编译,并且场景已显示,但场景的任何内容都没有显示。

在 GameScene 类中,我尝试使用两种不同类型的显示内容。

  1. ImageView mapView 设置图像(我不知道要将 ImageView 作为子节点添加到哪个节点{类似 parent.getChildren().add( mapView) 不起作用} )
  2. 尝试在 Canvas 上绘图。 (和上面同样的问题。我在哪里添加这个Canvas?)

GUI 类:

public class GUI extends Application {
public static void main(String[] args) { launch(args); }

public void start(Stage primaryStage){
StackPane root = new StackPane();

Group game = new Group();
root.getChildren().add(game);
Scene gameScene = new GameScene(game,800,600);

Button btn = new Button();
btn.setText("Start Game");
btn.setOnAction(new EventHandler<ActionEvent>() {

@Override
public void handle(ActionEvent event) {
primaryStage.setScene(gameScene);
primaryStage.show();
}
});

root.getChildren().add(btn);

primaryStage.setScene(new Scene(root, 650,450));
primaryStage.show();
}
}

以及 GameScene 类:

public class GameScene extends Scene {
private final double WIDTH;
private final double HEIGHT;
public Canvas mapCanvas;
private Map map;

public GameScene(Parent parent, double x, double y) {
super(parent, x, y);
ImageView mapView = new ImageView();
WIDTH = x;
HEIGHT = y;
this.map = new Map((int)x,(int)y);
mapCanvas = new Canvas(WIDTH,HEIGHT);
mapView.setImage(map.getImage());

GraphicsContext graphicsContext = mapCanvas.getGraphicsContext2D();
draw(graphicsContext);
}

public void draw(GraphicsContext gc){
gc.fillRect(10, 10, 100, 50);
}
}

PS:哎呀!我在这个论坛的第一个问题。世界你好!

最佳答案

一年后...

将“Parent”替换为“Group”或执行以下操作:(Group)parent

关于java - 使用 JavaFX 显示另一个场景 [场景图问题],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23592005/

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