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

时间:2014-05-11 11:28:16

标签: java javafx

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

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

当我使用时:

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

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

使用游戏而不是root,一切都编译得很好,并且场景显示,但场景的内容都没有显示。

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

  1. ImageView mapView设置了一个图片(我不知道我在哪个节点添加ImageView作为一个孩子{像parent.getChildren().add(mapView)这样的工作不起作用})
  2. 尝试在Canvas上绘图。 (与上面的问题相同。我在哪里添加此Canvas?)
  3. 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:Jeah!我在这个论坛的第一个问题。 Hello World!

1 个答案:

答案 0 :(得分:0)

一年后......

替换&#34;家长&#34;与&#34; Group&#34;或者:(组)父母