通常のJFrame(アプリの一部)と2番目のJavaFXウィンドウ(JavaFXステージにJFrameを使用できません)があります。問題は、JavaFXウィンドウが常に他のすべてのウィンドウの上にある必要があることです。
この問題をどのように解決すればよいのかわかりません。何か案は?
これが古いスレッドであることは知っていますが、状況は変化し続けています。 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);
}
}
このニースから取られたサンプルコード writeup
私は今、同様の問題を抱えています。
私はこのコード行を使用して、常に最高の効果を得ています。
stage.initModality(Modality.APPLICATION_MODAL);
それは私にとってはうまくいきます。
これが doc。
このように(私はアラートを使用しています)
Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
stage.setAlwaysOnTop(true);
常に他のウィンドウをブロックするようにしたい場合は、次のように設定します。
alert.initModality(Modality.APPLICATION_MODAL);
AFAIK、JavaFXステージを常に最上位にするAPIはありません。ただし、 JFXPanel を使用すると、JavaFXシーンをJFrame内に配置できます。