Heim  >  Artikel  >  Java  >  Wie zeichnet man dauerhafte Rechtecke in einem JPanel: Verhindert, dass sie beim Repaint verschwinden?

Wie zeichnet man dauerhafte Rechtecke in einem JPanel: Verhindert, dass sie beim Repaint verschwinden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 11:04:02702Durchsuche

How to Draw Persistent Rectangles in a JPanel: Avoiding Disappearance on Repaint?

Zeichnen eines Rechtecks, das beim nächsten Malen nicht verschwindet

Problem:

Sie müssen ein JPanel erstellen, das Zeichnet Rechtecke, die auch dann sichtbar bleiben, wenn die Repaint-Methode wiederholt aufgerufen wird.

Vorgeschlagene Lösung:

Anstatt eine Liste von Rechtecken zu erstellen und diese jedes Mal neu zu zeichnen, wenn das JPanel aufgerufen wird neu gestrichen haben, sollten Sie erwägen, ein BufferedImage als Maloberfläche zu verwenden. Dieser Ansatz ermöglicht ein dauerhaftes Zeichnen, das bei Neulackierungen nicht verschwindet.

Implementierung:

  1. Erstellen Sie ein BufferedImage, das als Zeichenoberfläche dient.
  2. Zeichnen Sie das Rechteck auf dem BufferedImage mit dem Graphics2D-Objekt.
  3. Zeigen Sie das BufferedImage in der paintComponent-Methode des JPanel an.

Beispielcode:

<code class="java">class MyPanel extends JPanel {
    private BufferedImage canvasImage;

    // ...

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(canvasImage, 0, 0, this);
    }
}</code>

Durch diesen Ansatz bleibt das Rechteck auch nach wiederholten Repaint-Aufrufen auf dem JPanel sichtbar, da es direkt auf dem BufferedImage gezeichnet wird.

Das obige ist der detaillierte Inhalt vonWie zeichnet man dauerhafte Rechtecke in einem JPanel: Verhindert, dass sie beim Repaint verschwinden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn