繁体   English   中英

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

[英]Displaying another Scene with JavaFX [Scene Graph issues]

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

问题:我不知道如何使用Scene构造函数中的“ parent”参数。 因此,我无法显示场景的内容。

当我使用时:

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

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

使用游戏而不是root可以正常编译所有内容,并显示Scene ist,但是没有显示Scene的内容。

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

  1. ImageView mapView设置图像(我不知道我要将ImageView作为子项添加到哪个节点{诸如parent.getChildren().add(mapView)不起作用))
  2. 试图在画布上画画。 (与上述问题相同。我在哪里添加此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:耶! 我在这个论坛上的第一个问题。 你好,世界!

一年后...

将“父”替换为“组”,或执行:(组)父项

暂无
暂无

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

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