隐藏窗口时,javaFX弹出窗口保持在顶部

隐藏窗口时,javaFX弹出窗口保持在顶部,javafx,popup,focus,Javafx,Popup,Focus,我的问题是,我希望我的弹出窗口要么关闭,要么不在顶部。 目前,当我点击一个与我的应用程序不同的窗口时,应用程序会消失在它后面,但弹出窗口会停留在顶部,位于属于不同应用程序的窗口前面 我想弹出窗口要么表现不同,要么作为黑客我想隐藏弹出窗口 我在stackoverflow的其他q&a中发现了这些侦听器,我尝试对这些侦听器执行此操作,但当我最小化窗口或使其失去焦点时,这些侦听器从未被调用 我注释掉了下面代码中不起作用的代码 /* * (non-Javadoc) * * @see javafx.

我的问题是,我希望我的弹出窗口要么关闭,要么不在顶部。 目前,当我点击一个与我的应用程序不同的窗口时,应用程序会消失在它后面,但弹出窗口会停留在顶部,位于属于不同应用程序的窗口前面

我想弹出窗口要么表现不同,要么作为黑客我想隐藏弹出窗口

我在stackoverflow的其他q&a中发现了这些侦听器,我尝试对这些侦听器执行此操作,但当我最小化窗口或使其失去焦点时,这些侦听器从未被调用

我注释掉了下面代码中不起作用的代码

/*
 * (non-Javadoc)
 * 
 * @see javafx.application.Application#start(javafx.stage.Stage)
 */
@Override
public void start(Stage primaryStage)
{
    log.debug("JavaFx start method");
    //log.trace("is used", fileViewController.toString());
    try
    {

    splash.start(primaryStage, () -> startMain());
    primaryStage.toFront();

    //HACK attempt
    //primaryStage.setAlwaysOnTop(false);

    //FIXME: this doesn't work (is not called)
    /*
    primaryStage.iconifiedProperty().addListener(new ChangeListener<Boolean>() {

        @Override
        public void changed(ObservableValue<? extends Boolean> ov, Boolean t, Boolean t1) {
            System.err.println("minimized:" + t1.booleanValue());
            popupBuilder.hide();
            popupPicker.hide();
            popupAbout.hide();
            popupExecute.hide();
            popupAdministration.hide();
            popupLicensegenerator.hide();
            popupProjects.hide();
        }
    });
    */

    /*
     * This doesn't work, either
    primaryStage.focusedProperty().addListener(new ChangeListener<Boolean>(){
        @Override
        public void changed(ObservableValue<? extends Boolean> ov, Boolean oldValue, Boolean newValue) {
             System.err.println("focus:" + newValue);
            if (!newValue){
                popupBuilder.hide();
                popupPicker.hide();
                popupAbout.hide();
                popupExecute.hide();
                popupAdministration.hide();
                popupLicensegenerator.hide();
                popupProjects.hide();
            }else{
                //nothing   
            }
        }

    });
     */
}
catch (Exception e)
{
    log.error("Error during start initialization of main application!");
    e.printStackTrace();
    System.exit(1);
}
/*
*(非Javadoc)
* 
*@see javafx.application.application#start(javafx.stage.stage)
*/
@凌驾
公共无效开始(阶段primaryStage)
{
调试(“JavaFx启动方法”);
//log.trace(“已使用”,fileViewController.toString());
尝试
{
splash.start(初级阶段,()->startMain());
初级阶段toFront();
//黑客企图
//primaryStage.setAlwaysOnTop(假);
//FIXME:这不起作用(未调用)
/*
primaryStage.iconifiedProperty().addListener(新的ChangeListener()){
@凌驾

public void已更改(请注意),是否找到解决此问题的好方法?不,抱歉。我现在正在处理另一个项目。