問題タブ [invokeandwait]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
540 参照

java - InvokeAndWait からの戻り値

たとえば、ビューがユーザーにパスを選択するように求める機能を提供するJava GUIアプリケーションがあります。ユーザーがパスを選択するまで (またはユーザーがキャンセルするまで)、関数はブロックされている必要があります。

関数は EDT スレッドのコンテキストで呼び出されないため、invokeAndWait を使用します。パスがビューのプライベート メンバーである場合、次のようになります。

私の問題は、EDT コンテキストで選択されたパスを、最初に呼び出された関数に渡し、そこに返す方法でした。次の行はすでにブロックされています。

とりあえず私は private member で解決しましたpathが、実際にはこの解決策が好きではありません.pathは一時的な変数であり、実際にはクラス自体とは何の関係もありません. これに対する別の解決策を探していたところ、 に出会いましたSwingWorkerが、これで「問題」を解決する方法がわかりませんでした。

別のアイデアは、getter と setter を使用してメンバーとして文字列を持つオブジェクトを作成して、この文字列を設定し、このオブジェクトの参照を渡して、EDT で文字列メンバーを設定し、getPath関数でそれを返すことです。

誰かがよりスムーズな解決策を持っていますか?