Heim > Java > javaLernprogramm > 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
Freigeben: 2024-10-29 11:04:02
Original
776 Leute haben es durchsucht

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage