0

javafxプログラムをコーディングしていますが、メッセージと確認を表示するために、独自のステージベース(Javafx.Stage)ダイアログボックスを作成して使用する必要があります。これまでに必要なコードをすべて作成しましたが、問題があります。

ダイアログボックスは、「yes」、「no」、「retry」などの応答が返されるまで、残りのコードの実行を停止する必要があります。「DialogBox.ShowMessage」のようなダイアログボックスを使用すると、メッセージとボタンを含むステージが表示されます。ただし、ご想像のとおり、残りのコードは引き続き実行されます。どうすればこれを回避できますか?ステージを作成するときは、他のスレッドまたはそれが依存するスレッドを停止する必要があります。インターネットやここで検索しましたが、正確な解決策が見つかりません。1つのアイデアは、「javafx.event.EventDispatcher」または「javafx.event.EventDispatchChain」を使用することですが、それらの使用方法がわかりませんでした。そして別のアイデアは「java.awt.EventQueue」を使用することです。そして、ここに役立つものがあります。私は、ステージの表示と非表示のイベント、およびイベントハンドラーの表示と非表示を制御できます。

状況を十分に明らかにしたいと思います。簡単に言うと、私は自分のコードで別のステージを使用しながらスレッドを管理する必要があります。

ありがとうございました。

4

1 に答える 1

1

実行の中断については、Jiraの問題http://javafx-jira.kenai.com/browse/RT-19783があります。
回避策として、EventDispatcher と EventDispatchChain を使用してこの問題を解決する方法はわかりませんが、EventHandlers をパラメーターとして送信できます。例えば、

public static void ShowMessage(final EventHandler<ActionEvent> okAction, final EventHandler<ActionEvent> cancelAction){

   // Define and add buttons to the "view" and show message

   btnOk.setOnAction(new EventHandler<ActionEvent>() {
        public void handle(ActionEvent event) {
        okAction.handle(null);
        }
    });

   btnCancel.setOnAction(new EventHandler<ActionEvent>() {
        public void handle(ActionEvent event) {
        cancelAction.handle(null);
        }
    });
}

そして、それを次のように使用します。

DialogBox.ShowMessage(
 new EventHandler<ActionEvent>() {
      @Override public void handle(ActionEvent arg0) {
        // Do stuff when "ok" clicked. 
},
 new EventHandler<ActionEvent>() {
      @Override public void handle(ActionEvent arg0) {
        // Do stuff when "cancel" clicked. 
});

ただし、これは一種の「曲がりくねった」方法であることに同意します。
Siteye hoş geldin ve kolay gelsin.

于 2012-04-27T09:51:45.427 に答える