JavaFX 2.2 Stage始终位于顶部

时间:2012-10-10 12:19:05

标签: java javafx jframe always-on-top

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

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

4 个答案:

答案 0 :(得分:27)

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

这将是让舞台始终排在最前面的最简单方法。如需早期访问8u20,请访问website

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);
    }
}

从这个不错的writeup

中取得的示例代码

答案 1 :(得分:13)

我现在有类似的问题。

我使用这行代码来获得始终最佳效果:

stage.initModality(Modality.APPLICATION_MODAL);

它适用于我。

以下是doc.

答案 2 :(得分:2)

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

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

如果你想要它总是阻止其他窗口,只需设置:

alert.initModality(Modality.APPLICATION_MODAL);

答案 3 :(得分:1)

AFAIK,没有API可以让JavaFX阶段始终排在最前面。但是您可以使用JFXPanel将JavaFX场景放在JFrame中。