当前位置: 首页 > 知识库问答 >
问题:

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

韩照
2023-03-14

我想在一个扩展场景的类中画一张画布。当我按下场景上的按钮时,这个场景应该显示出来,这个场景是在扩展application的类“GUI”中创建的。

Scene gameScene = new GameScene(root,800,600);
  1. ImageView mapView设置图像(我不知道要将ImageView作为子节点添加到哪个节点{类似Parent.GetChildren().add(mapView)不起作用})
  2. 试图在画布上画画。(与上面的问题相同。在哪里添加此画布?)

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!我在这个论坛上的第一个问题。你好世界!

共有1个答案

许沛
2023-03-14

一年后...

将“parent”替换为“Group”或do:(Group)parent

 类似资料:
  • 在我第一次使用JavaFX时,场景被错误地显示,我没有找到原因。例如,在E(fx)clipse页面的第一个基本教程中提出了以下代码: 它应该显示文本“Hello FX”,但显示以下内容: 我的Java版本是适用于Windows 64(Win 7)的8u65。

  • 我一直试图从控制器打开一个新窗口以显示进度条: 请帮忙。没有例外,也没有错误。谢谢 编辑:我已经找到了它不显示的原因,这是因为在后面的代码中我有一个函数:阻止程序刷新我的场景和显示元素。是否有一种方法可以在后台或另一个线程中运行这一行(我以前从未使用过线程)再次感谢你的帮助。

  • 我写信是为了获取有关JavaFX的一些信息。我使用SceneBuilder设计了一个应用程序,它有一个主要场景,由几个文本字段和用于浏览文件的按钮组成。程序运行后还有一个用于输出的文本区域。我在控制器的初始化方法中添加了更改侦听器,以便在更新输出文本区域时修改日志文件。 最初,我使用输出文本区域来显示日志文件,对其进行了测试。一旦我从主文件菜单中选择了“查看日志”菜单项,我就能够在这个输出文本区域

  • 问题内容: 我有一个使用javafx Scene来渲染某些东西的应用程序,并且我想将该渲染结果放入我在Javafx中创建的某些GUI中。我该怎么做? 基本上,有一些容器可以放入场景,然后将其放入GUI。 抱歉,如果是新手问题,我是JavaFX的新手 问题答案: 该场景只有一个顶级父节点作为根。您可以获取它并放入另一个场景。

  • 我创建了一个游戏,我想给它添加一个开始屏幕,我使用FXML添加了它,还添加了两个按钮(开始和退出)。 按下开始按钮后,我希望游戏加载场景并切换到游戏开始。我对如何做有一个粗略的想法,但我有点挣扎,因为我的SampleController类不知道如何启动游戏等,因为所有代码(以及加载初始开始菜单的代码)都在我的主类中,所以我尝试了这样的事情: 我尝试使用一个函数来切换场景,但它不起作用,也试图使用获

  • }`我正在计划在同一舞台上使不同的部分成为自己的场景。如果有任何帮助,我将不胜感激。我正在使用NetBeans8.2。