【问题标题】:JavaFX 2.2 Stage always on topJavaFX 2.2 Stage 始终处于领先地位
【发布时间】:2012-10-10 12:19:04
【问题描述】:

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

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

【问题讨论】:

标签: java javafx jframe always-on-top


【解决方案1】:

我知道这是一个旧线程,但事情一直在变化。来到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的示例代码

【讨论】:

  • 这就是我的工作方式。 stage.initModality(Modality.APPLICATION_MODAL) 在某些时候也可以工作,但舞台仍将位于任务栏后面。
【解决方案2】:

我现在也有类似的问题。

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

stage.initModality(Modality.APPLICATION_MODAL);

对我来说很好用。

这里是doc.

【讨论】:

  • 谢谢伙计,这对我也有用。奇怪的方法,但似乎是唯一简单的方法。问候
  • 非常感谢!通过提供此代码,您节省了很多精力!
【解决方案3】:

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

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

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

alert.initModality(Modality.APPLICATION_MODAL);

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      • 2011-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多