gpt4 book ai didi

java - 如何应对从另一个应用程序获得焦点?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:16:35 25 4
gpt4 key购买 nike

我的 JavaFX 8 应用程序在获得焦点时必须 doStuff()。这很简单:

primaryStage.focusedProperty().addListener((observable, wasFocused, nowFocused) -> {
doStuff();
});

但是,当我显示对话框并且用户关闭它时,doStuff() 会触发。我希望它仅在用户从另一个应用程序切换到我的应用程序时触发,例如浏览器中的 Alt+Tab

换句话说,我想doStuff()当且仅当其他应用程序的窗口失去焦点而我的应用程序窗口获得焦点。

这可能吗?

编辑: FibreFoX 发布的答案和 Appelemac在显示对话框之前需要明确执行额外的步骤。这个解决方案远非完美,因为我(或任何开发人员,通常)必须在显示对话框之前记住这一步。忘记它会引入难以发现的错误。

扩展 Dialog 以自动完成它不是一个选项,因为我想使用已经扩展原始 Dialog 的内置对话框。

这是非常基本的功能,如果没有简单的方法在 JavaFX 中实现它,我会感到很惊讶。

最佳答案

您可以在打开此类对话框时使用全局 boolean 值,并且只有当该全局开关为 true/false/无论您选择什么时,您才能对该状态开关使用react。

public class GlobalDialogMemory{
public static boolean dialogShown = false;
}

使用 CDI 时,您可以注入(inject)应用程序范围的当前实例(但您应该改用 getter/setter 和非静态 boolean 值;)

关于java - 如何应对从另一个应用程序获得焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34483762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com