• ベストアンサー

コンソール出力画面をフレームにつけるには

JTextAreaを含むJFrameにおいてactionPerformedメソッドを実行している最中はJTextAreaへの出力がされなず、実行状況を逐次JTextAreaに書き込むことができません。なので、System.out.println()メソッドによる出力をJTextAreaと置き換えて、コンソールへの標準出力画面をJFrameに含めたいのですが、そのようなことは可能でしょうか? (アクションを実行中に実行状況を表示する方法をネットで調べてもプログラムの内容がよく分からなかったのでこのようなやり方を考えてみました。)

質問者が選んだベストアンサー

  • ベストアンサー
  • bnosuke-x
  • ベストアンサー率39% (43/110)
回答No.1

>actionPerformedメソッドを実行している最中はJTextAreaへの出力がされなず、 これはスレッドを使うと解決できます。 actionPerformedへとんだらそのまま処理を行うのではなく、処理をするためのスレッドを立てて処理はそいつに任せて、actionPerformedはそのままお終いにする(実行がactionPerformedの最後からこぼれ落ちるがままにする)。 そうすると、逐次描画がなされるようになります。 なぜそれでうまくいくのかというと、どうやらactionPerformedなどに飛んでくるスレッドはGUIイベントの監視と描画を担当しているらしく、帰してあげないとその処理が止まってしまうようなのです。 actionPerformedからそのまま処理をこなしてしまうと、描画などをする人がいなくなってしまうのですね。 actionPerformedの中で毎回処理をこなすためのスレッドを立てるのは本当は良い設計ではないはずで、MVCモデルなどの考え方で色々なクラスで役割分担をするのが理想だと思います。 その点で色々工夫しているプログラムをネットで探し当てたので解りにくかったのでしょう。 ともかく上記のようにしてみて、不都合があったら解決策を考えるという事で学習を進めて行かれてはいかがでしょうか。 ※ご質問の内容には全く答えていませんが、おそらくその方法では上記の理由でやはり解決にはならないと思うのです。

marucha
質問者

お礼

ご親切な回答ありがとうございます。 なんとかスレッド立てをすることでアクション中に描画をさせることができました。

関連するQ&A