我的问题是我想让我的弹出窗口关闭或不关闭。 目前,当我点击与我的应用程序不同的窗口时,应用程序会消失在其后面,但是弹出窗口保持在顶部,位于属于不同应用程序的窗口前面。
我希望弹出窗口的行为不同,或者我想隐藏弹出窗口。
我试图用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);
}
}