消えない四角形の描画
コード内で、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>
注:
以上がJPanel 上で消えない四角形を描くには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。