トップページ > プログラム > 2014年12月18日 > pWVc1HJk

書き込み順位&時間帯一覧

16 位/204 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000001000000001001003



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
873==641
★★Java質問・相談スレッド171★★

書き込みレス一覧

★★Java質問・相談スレッド171★★
873 :デフォルトの名無しさん[sage]:2014/12/18(木) 09:23:52.17 ID:pWVc1HJk
描画関連命令を発行する複数のクラスとそれを処理する1つのクラスがあります。
命令の処理順序が変わってしまわないように、
repaint関連の実行が終わるまで次の命令に行かないようにフラグを作ることにしました。
repaintを呼ぶメソッドで呼ぶ前にフラグをtrueにして描画が終わったらfalseにするようにし、
呼んだ後フラグがfalseになるまで待たせることにしました。
色変更命令と文字描画命令を交互にそれぞれ7つ発行・実行しようとしたところ
文字描画の3つ目の実行で無限ループのようになってしまいました。

どのようにするのがよいのでしょうか?
★★Java質問・相談スレッド171★★
879 :873==641[sage]:2014/12/18(木) 18:36:55.51 ID:pWVc1HJk
>>877
その通りです。
いろいろあって間があいてしまったこともあって書かなかったのですが、
以前>>641で描画系の質問をした人です。

描画をよそでやるのではなくきちんとJPanelのpaintComponentにやらせようと思い、
まずJPanelを親クラスに持つクラス(Canvasクラス)を作りました。
例えば文字描画を複数回させたいときは、
まず文字描画に必要なパラメータをCanvasクラスのdrawCanvasメソッドに渡します。
drawCanvasではそのパラメータをフィールドに記憶させてrepaintを呼びます。
paintComponentではそのフィールドを見て指定された位置に指定されたものを描画します。
paintComponentが呼び出されるのはそのすぐ後とは限らないので、
そのままではその間に次の命令が実行されるかもしれないですよね?
drawCanvasメソッドが終わるまで次の命令が実行されることはないので、
paintComponentで描画が終わるまでdrawCanvasを終えないことにしようとしました。
ですが、現状同期処理や排他的処理の方法があまりよくわかっていません。
synchronized等について調べてみます。
★★Java質問・相談スレッド171★★
883 :873==641[sage]:2014/12/18(木) 21:29:20.09 ID:pWVc1HJk
>>880
まだまだわからないことや悩んでることもあり、
大丈夫とは言えないかもです・・・;

>>882
画面のサイズが可変なので画像用意するのは・・・とか思っていましたが、
やはり描画命令分をまず画像に描画してそれをpaintComponentで画面のJPanelに描画するようにします。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。