16

我有一个普通的 JFrame(应用程序的一部分)和第二个 JavaFX 窗口(我不能将 JFrame 用于 JavaFX 阶段)。问题是 JavaFX 窗口应该始终位于所有其他窗口的顶部。

我不知道我应该如何解决这个问题!有任何想法吗?

4

4 回答 4

34

我知道这是一个旧线程,但事情一直在变化。来到JDK 8u20是一种新方法primaryStage.setAlwaysOnTop(true);

这将是使舞台始终处于顶部的最简单方法。要提前访问 8u20,请访问网站

public class KeyholeDemo extends Application {
    @Override public void start(Stage primaryStage) {
        primaryStage.initStyle(StageStyle.TRANSPARENT);
        primaryStage.setAlwaysOnTop(true);

        // code omitted...
    }

    public static void main(String[] args) {
        launch(args);
    }
}

取自这篇不错的文章的示例代码

于 2014-05-31T03:43:36.983 回答
13

我现在也有类似的问题。

我使用这行代码来获得始终处于最佳状态的效果:

stage.initModality(Modality.APPLICATION_MODAL);

这对我来说可以。

这是文档。

于 2013-04-01T18:44:16.323 回答
2

像这样(我正在使用警报)

 Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
 stage.setAlwaysOnTop(true);

如果您希望它始终阻止其他窗口,只需设置:

alert.initModality(Modality.APPLICATION_MODAL);
于 2017-07-13T12:00:27.617 回答
1

AFAIK,没有 API 可以让 JavaFX 阶段始终处于首位。但是您可以使用JFXPanel将 JavaFX 场景放入 JFrame 中。

于 2012-10-10T12:38:36.887 回答