サイクルアクションハンドラーの呼び出しを防ぐ必要がありますか

ヨジーン

既存の答えを見つける適切な方法が見つからないため、私の状況を説明するスケッチの例を次に示します。

public class MyRButton {
    RadioButton rb;
    MyRButton (RadioButton _rb) {
         rb = new RadioButton(_rb);
         rb.setOnAction(this::handleSelectedAction);
    }

    handleSelectedAction(ActionEvent _selected) {
        // DO if RadioButton rb is selected directly (by mouse etc.)
        // Some external actions are able to reset isSelected() state of the 
        // RadioButton during action handling, so to make sure it's still
        // selected after method processing:
        rb.setSelected(true);   // HERE IS THE DOUBT IF THIS OPERATOR CALLS
        // handleSelectedAction(ActionEvent _selected) RECURSIVELY     
    }
}

rb.setSelected(true)を無効化/有効化アクションハンドラー命令で囲む必要がありますか?

    handleSelectedAction(ActionEvent _selected) {
        // DO if RadioButton rb is selected directly (by mouse etc.)
        rb.setOnAction(null);
        rb.setSelected(true);
        rb.setOnAction(this::handleSelectedAction);
    }

元のコードはうまく機能しますが、handleSelectedActionメソッドがバックグラウンドで永続的に実行されているかどうかは疑わしいです。

ヨジーン

OK、みんな、kleopatraのリクエストに従って、実行できる簡単なサンプルを作成しました。

    package rbexample;

    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.RadioButton;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;

    public class RBExample extends Application {
        RadioButton rBtn;
        Button btn;

    @Override
    public void start(Stage primaryStage) {
        rBtn = new RadioButton();
        rBtn.setText("Select Me");
        rBtn.setOnAction(this::handleRBSelectedAction);
        btn = new Button();
        btn.setText("Push Me");
        btn.setOnAction(this::handleBPushedAction);

        VBox root = new VBox(2);
        root.getChildren().add(rBtn);
        root.getChildren().add(btn);
        Scene scene = new Scene(root, 150, 50);
        primaryStage.setTitle("RBExample");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    private void handleRBSelectedAction(ActionEvent event) {
        if (rBtn.isSelected()) {
            System.out.println("RB Selected directly");
        }
    }
    private void handleBPushedAction(ActionEvent event) {
        rBtn.setSelected(true);
        System.out.println("RB Selected by button");
    }

    public static void main(String[] args) {
        launch(args);
    }
}

この例からわかるように、RadioButtonイベントハンドラーはアクションの場合は呼び出されません

rBtn.setSelected(true);

外部で実行されます(この場合はButtonアクションハンドラーから)。したがって、RadioButtonイベントハンドラーを無効にしてから再度有効にする必要はありません。

RadioButtonが本当に選択されるようにするためのRadioButtonイベントハンドラー内のsetSelected(true)の必要性に関して、直接RadioButtonの状態変更をインターセプトできるバックラウンドプロセスがあるかどうかは、残りのコードに依存します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

クロージャ内で常に完了ハンドラーを呼び出す必要がありますか?

分類Dev

Cでの呼び出しごとにシグナルハンドラーをリセットする必要がありますか?

分類Dev

onDestroy()イベント時に、ライフサイクルでremoveObserverを呼び出す必要がありますか?

分類Dev

呼び出しアクションをreactjsfluxに保存する必要がありますか?

分類Dev

ドロップダウンを使用した場合、SQLインジェクションを防ぐ必要がありますか?

分類Dev

ハイパーリンクをクリックしてJavascript関数を呼び出し、アニメーションが終了するのを待ちますか?

分類Dev

非同期関数を呼び出すクライアント側のコードはawaitを使用する必要がありますか?

分類Dev

バックエンドまたはフロントエンドでサードパーティのAPI呼び出しを行う必要がありますか?

分類Dev

メモリリークを防ぐためにClickイベントのサブスクライブを解除する必要がありますか?

分類Dev

アプリ内購入中に失敗したトランザクションでfinishTransationを呼び出す必要がありますか?

分類Dev

Pythonでファイルハンドラーのflushメソッドを呼び出す必要がありますか

分類Dev

Gunicornの「アプリケーションオブジェクトは呼び出し可能である必要があります」エラー

分類Dev

ASP.NET MVCアプリケーションのどこに外部サービス呼び出しを配置する必要がありますか?

分類Dev

AspectJの「アラウンド」アドバイス-「proceed」を呼び出す必要がありますか?

分類Dev

読み取り可能なイベントハンドラー内でreadable.read()を繰り返し呼び出す必要がありますか?

分類Dev

RXJSサブジェクトのサブスクライブ-アクションはプレーンオブジェクトである必要があります。非同期アクションにカスタムミドルウェアを使用する

分類Dev

Angular 11にアップグレードした後、「inject()をインジェクションコンテキストから呼び出す必要があります」を取得する

分類Dev

reactおよびreduxのcomponentDidUpdate()でアクションを呼び出して状態を設定する方法(無限ループを防ぐ)

分類Dev

reactおよびreduxのcomponentDidUpdate()でアクションを呼び出して状態を設定する方法(無限ループを防ぐ)

分類Dev

Windows Azureクラウドアプリケーションでは、最初のサーバー呼び出しが後続の呼び出しよりも時間がかかりますか?

分類Dev

コントローラーアクションが、最初の検索または新規以外の1つのモデルメソッドを呼び出す必要があるのはなぜですか?

分類Dev

アプリの起動サイクル中に `registerUserNotificationSettings:`を呼び出す必要がありますか?

分類Dev

{Springを使用したコアJava}プレーンJDBCを介してPLSQLストアドプロシージャを呼び出す-理想的にはトランザクション管理を行う必要があります

分類Dev

Ionic-ionicModal.remove()はいつ呼び出す必要がありますか?[イオンモーダルハイドコールバック]

分類Dev

シングルトンクラスのQtメッセージハンドラーメンバー関数を呼び出すとエラーが発生するのはなぜですか:引数リストがありませんか?

分類Dev

「アサーションに失敗しました:ランタイムの準備が整うまで待つ必要があります」JavaScriptでC関数を呼び出すときのエラー

分類Dev

NuxtJSとVuexを使用した404のルーティング-コンポーネントはミューテーションを呼び出す必要がありますか、それともアクションはプロミスを返すことができますか?

分類Dev

送信フォームヒットからアクションポストメソッドが呼び出されるのを防ぐ方法

分類Dev

Angular4-setTimeout呼び出しのサブスクライブを解除する必要がありますか?

Related 関連記事

  1. 1

    クロージャ内で常に完了ハンドラーを呼び出す必要がありますか?

  2. 2

    Cでの呼び出しごとにシグナルハンドラーをリセットする必要がありますか?

  3. 3

    onDestroy()イベント時に、ライフサイクルでremoveObserverを呼び出す必要がありますか?

  4. 4

    呼び出しアクションをreactjsfluxに保存する必要がありますか?

  5. 5

    ドロップダウンを使用した場合、SQLインジェクションを防ぐ必要がありますか?

  6. 6

    ハイパーリンクをクリックしてJavascript関数を呼び出し、アニメーションが終了するのを待ちますか?

  7. 7

    非同期関数を呼び出すクライアント側のコードはawaitを使用する必要がありますか?

  8. 8

    バックエンドまたはフロントエンドでサードパーティのAPI呼び出しを行う必要がありますか?

  9. 9

    メモリリークを防ぐためにClickイベントのサブスクライブを解除する必要がありますか?

  10. 10

    アプリ内購入中に失敗したトランザクションでfinishTransationを呼び出す必要がありますか?

  11. 11

    Pythonでファイルハンドラーのflushメソッドを呼び出す必要がありますか

  12. 12

    Gunicornの「アプリケーションオブジェクトは呼び出し可能である必要があります」エラー

  13. 13

    ASP.NET MVCアプリケーションのどこに外部サービス呼び出しを配置する必要がありますか?

  14. 14

    AspectJの「アラウンド」アドバイス-「proceed」を呼び出す必要がありますか?

  15. 15

    読み取り可能なイベントハンドラー内でreadable.read()を繰り返し呼び出す必要がありますか?

  16. 16

    RXJSサブジェクトのサブスクライブ-アクションはプレーンオブジェクトである必要があります。非同期アクションにカスタムミドルウェアを使用する

  17. 17

    Angular 11にアップグレードした後、「inject()をインジェクションコンテキストから呼び出す必要があります」を取得する

  18. 18

    reactおよびreduxのcomponentDidUpdate()でアクションを呼び出して状態を設定する方法(無限ループを防ぐ)

  19. 19

    reactおよびreduxのcomponentDidUpdate()でアクションを呼び出して状態を設定する方法(無限ループを防ぐ)

  20. 20

    Windows Azureクラウドアプリケーションでは、最初のサーバー呼び出しが後続の呼び出しよりも時間がかかりますか?

  21. 21

    コントローラーアクションが、最初の検索または新規以外の1つのモデルメソッドを呼び出す必要があるのはなぜですか?

  22. 22

    アプリの起動サイクル中に `registerUserNotificationSettings:`を呼び出す必要がありますか?

  23. 23

    {Springを使用したコアJava}プレーンJDBCを介してPLSQLストアドプロシージャを呼び出す-理想的にはトランザクション管理を行う必要があります

  24. 24

    Ionic-ionicModal.remove()はいつ呼び出す必要がありますか?[イオンモーダルハイドコールバック]

  25. 25

    シングルトンクラスのQtメッセージハンドラーメンバー関数を呼び出すとエラーが発生するのはなぜですか:引数リストがありませんか?

  26. 26

    「アサーションに失敗しました:ランタイムの準備が整うまで待つ必要があります」JavaScriptでC関数を呼び出すときのエラー

  27. 27

    NuxtJSとVuexを使用した404のルーティング-コンポーネントはミューテーションを呼び出す必要がありますか、それともアクションはプロミスを返すことができますか?

  28. 28

    送信フォームヒットからアクションポストメソッドが呼び出されるのを防ぐ方法

  29. 29

    Angular4-setTimeout呼び出しのサブスクライブを解除する必要がありますか?

ホットタグ

アーカイブ