【发布时间】:2018-02-14 09:53:25
【问题描述】:
我正在尝试在 JavaFX 中创建一个可以在窗口中弹出到前面的舞台,而主舞台保持最小化。
这仅在主舞台在屏幕上可见时才有效。我曾尝试使用 Modality 使其工作,但随后用户无法与主舞台交互,这不是我想要的。
可以使用以下应用程序重现该问题:
public class MainApp extends Application {
@Override
public void start(Stage stage) throws Exception {
Scene mainScene = new Scene(new Parent() {});
Stage mainStage = new Stage();
mainStage.setScene(mainScene);
mainStage.show();
mainStage.setIconified(true);
Scene popUpScene = new Scene(new Parent() {});
Stage popUpStage = new Stage();
popUpStage.setScene(popUpScene);
Thread.sleep(5000);
popUp(popUpStage);
}
public static void popUp(Stage popUpStage){
if (popUpStage.isIconified()) popUpStage.setIconified(false);
popUpStage.show();
popUpStage.requestFocus();
popUpStage.toFront();
}
}
有谁知道这个问题的答案吗?
【问题讨论】:
-
当我运行您的示例代码时,我需要做什么才能重现该行为?
-
不要在 JavaFX 应用程序线程上调用
Thread.sleep(),你要做的就是挂起你的应用程序。见:Updating your UI and forcibly waiting before continuing JavaFX -
这可能类似于How to call launch() more than once in java(请参阅 wumpus 示例答案)。也许您想像该示例中那样调用
setAlwaysOnTop()。