Dessiner des rectangles qui ne disparaîtront pas
Dans votre code, vous avez créé une classe MyPanel qui étend JPanel. Au sein de cette classe, vous définissez une méthode DrawRect qui prend plusieurs arguments pour dessiner un rectangle. Cependant, lorsque vous appelez repaint(), il redessine tout le panneau, y compris les rectangles précédents.
Pour éviter cela, vous pouvez plutôt utiliser Graphics2D.drawImage() pour dessiner votre rectangle au-dessus du canevas existant. Voici comment modifier votre code :
<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>
Remarque :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!