4

この要点で@jewelseaが提供する例を使用しようとしていますが、FXMLを使用しているため行き詰まっています。

JavaFX 2.1 でモーダル ウィンドウを作成する方法とJavaFX 2 モーダル ウィンドウに対するこの回答の両方の投稿を見てきました。

私が立ち往生しているのは、jewelsea のコードにあります。

final WebView webView = new WebView(); 
webView.getEngine().load("http://docs.oracle.com/javafx/");
primaryStage.setScene(new Scene(webView));

一方、私は FXML を使用しているので、次のようにします。

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MyFXML.fxml"));
Scene scene = (Scene)fxmlLoader.load();
myController = fxmlLoader.getController();
primaryStage.setScene(scene);

コード (上記の 4 行) を変更して、jewelsea の例で動作するようにする方法を教えてもらえますか?

ありがとう!

4

1 に答える 1

3

FXMLLoader作成したシーン サンプル コードではなく、使用している置換コードWebViewで問題ありません。変更する必要はありません。

コードは、fxml ドキュメントに基づいてプライマリ ステージのメイン シーンを表示します (私のサンプルでは、​​メイン シーンとして WebView を使用していましたが、これは必要ありません。したがって、WebView 関連のコードは必要ありません。要旨)。

必要なのは、ダイアログを表示したいときにコントローラーに何らかのトリガーを入れることです。簡単な例として、ボタンのみを含むメイン シーンに fxml をセットアップし、コントローラーでボタンの ActionHandler を指定できます ( FXML の概要ドキュメントと同様)。

ここで、FXML の紹介のようにボタンが押されたときに println を実行する代わりに、dialog.show()WebView ドキ​​ュメントのロード時に gist が実行したようにメソッドを呼び出します。fxml で生成されたシーンの上にダイアログが表示されるはずです。

ダイアログ自体にシーンが含まれていることがわかります。必要に応じて (これはオプションです)、fxml を使用してシーンの内容を定義できます。これを行うには、ダイアログの構築時に、ダイアログのコンテンツ用に新しい fxml と新しいコントローラを設定し、ダイアログ用に fxml で作成されたシーンをダイアログのステージにロードします。これを行うコードは、メイン シーンの fxml を primaryStage にロードするために使用したコードとほとんど同じです。

上記を試して、うまくいくかどうかを確認してください。それでも立ち往生している場合は、おそらくこの回答の行に沿って要点のfxml固有の例を作成できます。

また、参照されている要点は少し前に書かれたものであり、JavaFX にはshowAndWaitメソッドがあり、ダイアログ呼び出しを行うときにコードの実行をブロックし、イベント ハンドラーの一部を使用せずにダイアログの結果を処理できるようになっていることにも注意してください。要点の例からのメカニズム。ただし、 showAndWait を使用する場合と使用しない場合の両方の戦略は、完全に受け入れられるソリューションです。

于 2012-09-22T02:05:58.670 に答える