カード リーダーを操作するための GUI を作成しました。これは主に、FileChooser
ダイアログを表示し、選択File
したものを CardHopper にキューに入れる [ADD] ボタンで構成されていJList
ます。
今、私はCPU(別JFrame
のスレッド上の別の)がカードリーダーの要求を行えるようにしたいと考えています。例えば、カードを読んで私に送ってください。カードリーダーが GUI を持つ前は、CPU と同じスレッドで動作するモデルだったので、そのreadCard()
メソッドを呼び出すだけで済みました。別のスレッドになったので、通信する正しい方法はメッセージパッシングを使用することのようです。
を使用して何かを実装しようとしていましたPriorityBlockingQueue
。これにより、CPU はput
キューでカード読み取りコマンドを実行し、CardReader はtake
そのコマンドを実行しますが、CardReader スレッドは通常、NetBeans が提供する Swing コード内のどこかでブロックされることに気付きました。 GUIイベントを待っていて、イベントキューに何かが到着するのを知らない. さらに、この「バックエンド」要求はデータ モデルを変更します。そのため、モデル内で何らかのコードを実行できListDataListeners
たとしても、GUI が GUI イベントを待機している間に GUI に通知を「起動」するのはコーシャーでしょうか?
これが難解すぎないことを願っています。私はまだ、GUI とスレッドの仕組みについて理解を深めようとしています。