【问题标题】:Bringing a single stage to the front in windows in JavaFX在 JavaFX 的窗口中将单个阶段置于最前面
【发布时间】: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();       
}

}

有谁知道这个问题的答案吗?

【问题讨论】:

标签: java windows javafx


【解决方案1】:

只需将这两行添加到 popUp。第一行把它带到前面。第二行允许与主舞台或其他窗口进行交互。

popUpStage.setAlwaysOnTop(true);
popUpStage.setAlwaysOnTop(false);

【讨论】:

  • 感谢这解决了我的问题,除此之外你要做的就是确保你的窗口没有被图标化。
  • 它也为我解决了这个问题。感谢您的解决方案。不过,我问自己,为什么 Stage.toFront() 在我的情况下不起作用...
  • 有点“hackish”
猜你喜欢
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 2017-12-02
  • 2017-05-17
相关资源
最近更新 更多