こんにちは、JFrame アプリのちらつきを取り除こうとしています。setDoubleBuffered(true) は Jpanel の paintComponent に使用できますが、JFrame の paint メソッドやアプレットには使用できないことがわかりました。
ペイント メソッド内に命令 this.createbufferstrategy(2) を導入することで、ちらつきを軽減することはできましたが、なくすことはできませんでした。
しかし、最終的に、ちらつきを完全に除去するコードの例を見つけました。これは、更新関数内で静的要素を描画することによって機能します。
アプレットの update 内で fillRect をテストして動作しますが、通常の Java アプリケーションにコピーを貼り付けると、jframe の update 関数内では動作しません。
これがコードです
Graphics graphics;
Image image;
public void update(Graphics g)
{
if (image == null) {
image = createImage(this.getWidth(), this.getHeight());
graphics = image.getGraphics(); }
graphics.setColor(Color.blue);
graphics.fillRect(0, 0, this.getWidth(), this.getHeight());
g.drawImage(image, 0, 0, this);//}
空のペイント関数を使用すると、これは画面に描画され、アプレットで青で塗りつぶされ、ちらつきもなくなります。しかし、jframe の通常のアプリケーションでは何もしません。
アプレット以外の通常のアプリケーション環境で更新内から fillRect または drawImage を機能させるには、何をする必要がありますか?
ところで、fillRect を呼び出すことによってグラフィックス オブジェクト自体が変更されている場合、私はこれに少し慣れていませんが、画像オブジェクトはどのように変更されるのでしょうか。画面を青くするには drawImage が必要だからです。
PS createbufferedstrategy と setignorerepaint の両方を使用しないようにしましたが、何も変わりません。