2

モーダル ダイアログを表示するには、次のコードを使用する必要があります。

val dialogStage:Stage = new Stage();
dialogStage.initOwner(ownerStageWindow)
dialogStage.initModality(javafx.stage.Modality.WINDOW_MODAL);
val scene = new Scene(...)
dialogStage.setScene(scene)
dialogStage.show();

しかし、所有者ステージをどこでどのように取得しますか?
JFXPanel をルート コンポーネントとして使用して JavaFX アプリケーションを埋め込む場合、最初の段階はありません。

4

2 に答える 2

0

JFXPanel のステージを取得するには:

Field f = JFXPanel.class.getDeclaredField("stage");
f.setAccessible(true);
stage = (Window)f.get(fxPanel);

ただし、取得するものが必ずしも Stage のインスタンスであるとは限らないことに注意することが重要です。Window のインスタンス (Stage のスーパークラス) になります。swing アプリケーションの場合、EmbeddedWindow インスタンス (ステージではない) を返します。

または、この技術的な答えを別の方法で述べると、純粋な JavaFx アプリケーションがある場合にのみ、ステージがあります。私が間違っている場合は、私を修正してください。

したがって、モーダル ウィンドウを表示するには、コード サンプルに示すように Window のインスタンスを渡すか、null を渡します。

于 2014-05-28T09:50:33.390 に答える
0

null 値を initOwner に渡します (ダイアログは WINDOW_MODAL ではなく APPLICATION_MODAL であるため、これによる副作用はあまり劇的ではない可能性があります)。

また

ダイアログシーン用に別の JFXPanel を含む JFrame を作成します。

于 2012-09-14T22:43:45.203 に答える