チラツキ消しときましょう

やはりチラツクのが気になるので防いどきますか。
現在の時刻は です。
現在の時刻は です。
現在の時刻は です。
現在の時刻は です。
ソースはDigitalClock08.javaです。

お馴染みダブルバッファリングを用いてます。ダブルバッファリングはリメイキング・オブ・MovingBallでも述べてるので見てみてください。

インスタンス変数として
    private Image offScreenImage;
    private Graphics offScreenGraphics;
のようにオフ・スクリーン・イメージとオフ・スクリーン・グラフィックスを宣言してinitメソッドで
    offScreenImage = createImage(getSize().width, getSize().height);
    offScreenGraphics = offScreenImage.getGraphics();
とcreateImageでアプレットと同じ幅のイメージを作成し、そこからgetGraphicsでGraphicsオブジェクトを取り出してます。

paintメソッドの中でg.drawImage()としてた部分を
    offScreenGraphics.drawImage(digits[hour24 / 10], imageWidth, 0, this);
のようにオフ・スクリーン・イメージに書きこむように換えます。それでpaintメソッドの最後で
    g.drawImage(offScreenImage, 0, 0, this);
とオフ・スクリーン・イメージをアプレットに描画します。

アプレットと同じ大きさのイメージが描画されるのでupdateメソッドでの処理は不要です。
    public void update(Graphics g) {
        paint(g);
    }
のようにオーバーライドしときます。これでダブルバッファリングはOK。

現時点でやりたいことは全部やったので一応完成ということにしときます。
このアプレット作るためにJava Tutorial見てたらアプレットは全部Swingに変わってたりしてて勉強すること多そうです。何か新しくやりたいことができたら改良します。

前の項目へ
「メイキング・オブ・DigitalClock」へ

最終更新日 : 1999年3月14日(日)

カメ飼ってます Valid HTML 4.0! Made with CSS midosabu@postpet.so-net.ne.jp