Nanashi-softプログラマ専用Javaアプリケーション


◇Javaアプリケーション-点滅しないようにする方法-

◎なぜ画面が点滅するのか?
スレッドの説明時に,無限ループを作って連続で画面描画を行うと,ほら点滅するでしょうと書きました
それじゃダメじゃんか! と思いませんか?
同じ場所に同じものを描画し続けているので,静止して表示されていなければなりません

Canvasクラスの

g.drawString("Hello World", 16, 16);

g.fillRect(0,0,240,240);

に変えてみて下さい

これをビルドして実行すると,画面に白黒の縞模様が表示されます
黒く塗りつぶしているはずなのに,白が見えると言うことは,何者かが白く塗りつぶす処理を行っていると予想できます

◎回避方法
repaintメソッドを発行すると,画面を白く塗りつぶしてから,描画が行われます
これを回避する方法は無いでしょうか?

まず,仕組みを理解する必要があります
repaintメソッド → updateメソッド → paintメソッド
の順で処理が行われます
この updateメソッドに画面をバックグラウンドカラーで塗りつぶす命令が記述されているものと考えます

そこで,updateメソッドを自分で記述して乗っ取ります

  static class fstCanvas extends Canvas{
    public void paint(Graphics g){
      g.drawString("Hello World", 16, 16);
      g.fillRect(0,0,240,240);
    }

    //updateメソッドを自分で記述
    public void update(Graphics g){
        paint(g);
    }
  }

これをビルドして実行すると,真っ黒な画面が表示されます
もう瞬いていません

このように Canvasクラスには,updateメソッドも記述するものだと言う認識でいると良いと思います


TOPプログラマ専用Javaアプリケーション