ホームページ >Java >&#&チュートリアル >JPanel 上で消えない四角形を描くには?

JPanel 上で消えない四角形を描くには?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-05 06:23:01734ブラウズ

How to Draw Rectangles That Won't Disappear on a JPanel?

消えない四角形の描画

コード内で、JPanel を拡張する MyPanel クラスを作成しました。このクラス内で、四角形を描画するためにいくつかの引数を取るメソッド DrawRect を定義します。ただし、repaint() を呼び出すと、前の四角形を含むパネル全体が再描画されます。

これを防ぐには、代わりに Graphics2D.drawImage() を使用して、既存のキャンバスの上に四角形を描画します。コードを変更する方法は次のとおりです:

<code class="java">class MyPanel extends JPanel {
  private BufferedImage canvasImage; // Create a BufferedImage to store the canvas

  public void DrawRect(int x, int y, int size, Color c) {
      if (canvasImage == null) {
          canvasImage = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_ARGB);
          Graphics2D g = canvasImage.createGraphics();
          g.setColor(getBackground());
          g.fillRect(0, 0, getWidth(), getHeight());
          g.dispose();
      }
      
      Graphics2D g = canvasImage.createGraphics();
      g.setColor(c);
      g.fillRect(x, y, size, size);
      g.dispose();
      
      repaint();
  }
  
  @Override
  public void paint(Graphics g) {
      super.paint(g);
      g.drawImage(canvasImage, 0, 0, null); // Draw the canvasImage onto the panel
  }
}</code>

注:

  • このアプローチでは、描画面として BufferedImage が作成され、再描画呼び出しが行われても保持されます。これにより、消えない四角形を描画できます。
  • 空のキャンバスに描画しないように、描画前に CanvasImage が null かどうかを必ず確認し、初期化してください。
  • ペイントで、CanvasImage を四角形を表示するパネル。

以上がJPanel 上で消えない四角形を描くには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。