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

JavaFX舞台显示空场景

柳鸿信
2023-03-14

我一直试图从控制器打开一个新窗口以显示进度条:

    Stage fenetre = new Stage();
    fenetre.initModality(Modality.APPLICATION_MODAL);

    FXMLLoader loader;
    Parent root;
    Scene chargementBox;

    loader = new FXMLLoader();
    loader.setLocation(getClass().getResource("/views/Chargement.fxml"));
    loader.load();
    root = loader.getRoot();
    chargementBox = new Scene(root);

    fenetre.setTitle("Chargement");
    fenetre.resizableProperty().set(false);    
    fenetre.setScene(chargementBox);
    fenetre.show();

请帮忙。没有例外,也没有错误。谢谢

编辑:我已经找到了它不显示的原因,这是因为在后面的代码中我有一个函数:transport.send(message);阻止程序刷新我的场景和显示元素。是否有一种方法可以在后台或另一个线程中运行这一行(我以前从未使用过线程)再次感谢你的帮助。

共有1个答案

燕翔飞
2023-03-14

要在后台线程上运行一些东西,您需要使用一个任务(可用一次)或一个服务(可重用)。

以下是使用服务的方式:

Service<Void> service = new Service<Void>(){
            @Override
            protected Task<Void> createTask() {
                return new Task<Void>() {
                    @Override
                    protected Void call() throws Exception {
                            //do your logic here.
                        return null;
                    }
                };
            }
        };
        service.setOnSucceeded(event -> {
                //do some processing when complete
             });
        service.setOnFailed(event -> {
               //do some processing when it failes
             });

        service.start();
 类似资料:
  • 我对may e(fx)clipse应用程序有问题。我想在应用程序启动时显示一个启动屏幕。我成功地创建了实现StartupProgressTrackerService的类,并调用了我的stateReach方法。然而,我对javafx本身有问题。我想用StageStyle创建Stage。未装饰。然而,当我调用stage时。show()方法阶段不会立即渲染,并在创建主窗口后立即显示。它可以很好地工作,例

  • 默认情况下,当所有窗口在JavaFX中关闭时,应用程序终止。然而,我使用了,让应用程序保留。现在,当应用程序被激活时,我将如何显示该应用程序?当应用程序从Mac Dock Bar激活时,是否有任何事件监听器可供我收听? 或者,当单击系统关闭按钮时,是否有要侦听的事件,以便我可以隐藏stage应用程序将在激活时显示?

  • 我正在构建一个应用程序,它会显示一个窗口,询问用户是否要使用两个按钮选项暂停计算机,其中一个是“是”,电脑将暂停。 另一个名为“稍后”的按钮应该隐藏窗口,一个小时后它再次出现,并提出相同的问题。 “后来的巴特顿”的代码 你在代码中看到的布尔是bc,这是我认为我可以控制的方式,相信我,我尝试了不同的方式,但没有人只是帮我解决这个问题,这是GUI类的代码 我知道那个平台。退出();终止程序,但当我只使

  • 我正在使用Javafx(没有使用FXML),我正在将阶段传递到a控制器中,以便在单击按钮时更改阶段上的场景。场景的变化是正确的,但是舞台和场景的尺寸增加了,它的尺寸增加了大约0.1(宽度),而高度有时也增加了(不是每次都增加)。 下面是正在使用的控制器。

  • 当我调整窗口大小时,舞台以及包含的场景会正确调整大小,但是当我单击最大化按钮时,只有舞台被最大化,而不是里面的场景。更糟糕的是,没有手动更改场景高度和宽度的方法(这些是只读的)。我还尝试创建新场景并将旧场景的根元素放在里面,但后来我得到了一个例外,即2个场景不能具有相同的根元素。谢谢! 最小可再现示例: 我标记了单击“最大化”的时刻。谢谢

  • 我想写一个包含以下类的游戏: 我希望所有这些课程都能在舞台上使用。首先,我启动startUp类,几秒钟后,我想删除startUp stackpane并更改场景(例如从fxml文件读取),但我是javafx中的noob。有什么想法吗?