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

时间:2017-09-21 09:18:55

标签: javafx popup focus

我的问题是我想让我的弹出窗口关闭或不关闭。 目前,当我点击与我的应用程序不同的窗口时,应用程序会消失在其后面,但是弹出窗口保持在顶部,位于属于不同应用程序的窗口前面。

我希望弹出窗口的行为不同,或者我想隐藏弹出窗口。

我试图用Listeners做这个,因为我在stackoverflow上的其他q& a中发现了这些,但是当我最小化或失去窗口焦点时,这些Listener永远不会被调用。

我注释掉了代码,这些代码在下面的代码中不起作用。

/*
 * (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);
}

}

0 个答案:

没有答案