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

当舞台隐藏在JavaFX中时,如何获取?

侯焱
2023-03-14

假设我在JavaFX中有一个舞台。我没有按X关闭按钮来关闭窗口,而是隐藏窗口,或者说切换到计算机上的其他应用程序。无论何时我隐藏窗口或切换到PC的任何其他窗口,我都希望舞台自动关闭。

我尝试了这三种方法,但所有这些方法仅在我自己关闭窗口时激活,而不是在我隐藏窗口时激活。

popupStage.setOnHidden(event -> Console.log("Hidden"));
popupStage.setOnHiding(event -> Console.log("Hidden"));
popupStage.setOnCloseRequest(event -> Console.log("Hidden"));

任何帮助将不胜感激。谢谢。

共有1个答案

党佐
2023-03-14

尝试使用Window对象的焦点属性(阶段从Window继承它)。

您可以将侦听器添加到此属性,以便在用户切换活动窗口时立即收到通知。

import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.stage.Stage;

public class Example extends Application {

    public static void main(String args[]) {
        Application.launch(args);
    }

    @Override
    public void start(Stage stage) {
        stage.focusedProperty().addListener(this::focusChanged);
        stage.setTitle("demo");
        stage.show();
    }

    private void focusChanged(ObservableValue<? extends Boolean> property, Boolean wasFocused, Boolean isFocused) {
        System.out.println("Window changed focus from " + wasFocused + " to " + isFocused);
    }

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

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

  • 问题内容: 我们正在Windows中构建JavaFX应用程序,我们希望能够做一些事情来操纵我们的应用程序在Windows 7/8任务栏中的显示方式。这需要修改Windows变量,称为“ 应用程序用户模型ID ”。 我们已经通过使用JNA设法完全完成了我们在Swing中想要的工作,并且我们想在JavaFX中重复我们的解决方案。不幸的是,要做到这一点,我们需要能够为应用程序中的每个窗口检索(窗口句柄)

  • 问题内容: 我已经为两个窗口/阶段编写了一个控制器。在MainClass中打开第一个窗口。如果用户单击按钮,则控制器中的第二个按钮。如何在applyFor()方法中从second.fxml获取TextFields? 谢谢。 问题答案: 在fxml之间共享控制器不是很好,除非它们具有相同的用途。在这里,这两个fxml似乎有不同的用途(帐户管理,登录或其中一个类似,并为另一个创建新帐户)。更糟糕的是,

  • 问题内容: 我需要创建一个向用户显示主要阶段的应用程序,并且如果用户关闭该阶段,而不是完成该应用程序,则应该隐藏该阶段以备后用。在摇摆中,我们可以仅将setVisible(false)调用到JFrame或JDialog,但是如何在JavaFX上执行呢? 问题答案: JavaFX工具包启动后,默认情况下,当最后一个可见窗口关闭时,它将关闭。 为防止这种情况,您可以致电 尽管可以从任何线程调用它,但是

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