解答編14
「ライン・アート」
 
← 前  :  次 →

それぞれのサンプル解答を,アーカイブにまとめてあります.

>  ソース・ファイルのダウンロード  <

「javax.swing.Timer」クラスの存在をすっかり失念していたのですが, 課題の意図としては「java.lang.Thread」クラスを使って欲しいと思います.

初心者の方がよくやりがちですが,paint() メソッドの中で たくさんの描画処理をさせるのは良くありません. このメソッドは再描画のタイミングでも呼ばれるため,その都度 描画することになってしまいます.

この「再描画のタイミング」は,ウィンドウ・プログラミングする上で重要です.
ウィンドウAが別のウィンドウ(任意)に隠れ,ふたたびウィンドウAが前面に 表示された時点で再描画する処理(= paint() メソッド)が呼ばれます. つまり paint() メソッドの中で計算処理などを行ってしまうと,再描画のたびに 実行されてしまい,意図しない状態になってしまう可能性があります.

それを回避するためにも,計算処理やオフ・スクリーンへの描画は別の場所で行い, paint() メソッドではバッファのイメージを描画するだけにしたほうが良いでしょう. オフ・スクリーン・バッファリング(ダブル・バッファリング)については更に独学で進めてみてください.

なお,再描画タイミングの実行例も簡単に作ってアーカイブに入れてあります. 表示されているウィンドウに対し,別のウィンドウをドラッグしてきて 隠したり表示させたりしてみてください. きっとすごい勢いでカウントされていくと思います.


表紙へ戻る