Java Paint-Komponente

Sarwan Soomro 15 Februar 2024
Java Paint-Komponente

Zuerst gehen wir darauf ein, wie die Java-Methode paintComponent() funktioniert. Wann ruft es auf und wie ist die Struktur seiner Subsysteme und Klassen?

Abschließend zeigen wir Ihnen, wie Sie mit dieser Methode Grafiken auf dem Bildschirm zeichnen. Lesen Sie weiter, um mehr zu erfahren.

die PaintComponent()-Methode in Java

Ziehen Sie einen Ort in Betracht, an dem Sie Ihren gesamten Mal- und Grafikcode aufbewahren können. Beachten Sie, dass es standardmäßig gesperrt ist und Sie nur auf Anfrage hereinlässt.

Was zeigt es an? Wenn es Zeit zum Malen ist, wird diese Methode initiiert.

Die Malerei hingegen beginnt in der Klassenhierarchie weiter oben. Analysieren Sie seine Klassenhierarchie: java.awt.Component.

Das Mal-Subsystem ruft diese Methode immer dann auf, wenn Ihre Komponente gerendert werden muss.

Wie wird Java paintComponent() aufgerufen? Das Java-AWT unterstützt einen Rückrufmechanismus.

Es ist erwähnenswert, dass der AWT-Callback-Mechanismus für Heavyweight- und Lightweight-Komponenten gleich ist. Diese Komponenten werden zum Malen verwendet, unabhängig davon, wie eine bestimmte Malanforderung aufgerufen/ausgelöst wird.

Ein Programm sollte den Renderingcode in eine bestimmte überschriebene Methode einfügen. Und dasselbe Toolkit ruft diese Methode auf, wenn es Zeit zum Malen ist.

Notiz
Die zu überschreibende Methode ist java.awt.Component.

Syntax:

import java.awt.*;
import javax.swing.*;
public void paintComponent(Graphics g) {
  // your code goes here
}

Darüber hinaus erweitert javax.swing.JComponent diese Klasse, indem sie die Methode paint in drei unterschiedliche Methoden aufteilt.

  1. Geschützte Void-Farbkomponente (Grafik g)
  2. protected void paintBorder(Graphics g)
  3. protected void paintChildren(Graphics g)

Wir glauben, dass Sie die Grundlagen dieser Methode bis jetzt verstanden haben. Lassen Sie uns nun eine andere Methode besprechen, die wir normalerweise mit paintComponent() verwenden.

Außerdem ist jetzt nicht die Zeit, es dem zuvor besprochenen System zu überlassen. Wir können das System jedoch mit der Methode repaint() bitten, die Anzeige aufzufrischen.

Notiz
Der Aufruf von repaint() führt zum Aufruf von paintComponent().

Best Practice für die Verwendung von Paint:

  1. Platzieren Sie nirgendwo Rendering-Code. Es könnte außerhalb des Bereichs des Paint-Rückrufs aufgerufen werden. Ein solcher Code kann aufgerufen werden, wenn das Malen unangemessen ist.
  2. Bevor die Komponente sichtbar ist oder Zugriff auf ein gültiges Graphics-Objekt hat, ist es nicht empfehlenswert, dass Programme paint() direkt aufrufen.

Eine Paint-Operation wird asynchron von AWT angefordert. Schauen Sie sich den folgenden Codeblock an, um eine Idee zu bekommen.

Code:

public void repaint() public void repaint(long xyz) public void repaint(int a, int b,
    int definewidth,
    int defineheight) public void repaint(long xyz, int a, int b, int definewidth, int defineheight)

Hier ist ein vollständiges Java-Demo-Beispiel.

Code:

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
// main class
@SuppressWarnings("serial")
class PainComponentDemo extends JPanel {
  public PainComponentDemo() {
    // setting background
    setBackground(Color.CYAN);
  }

  @Override
  // override java paintComponent
  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    g.drawOval(0, 0, getWidth(), getHeight());
  }
  // driver function
  public static void main(String[] args) {
    // extend jfram
    JFrame custJF = new JFrame();
    custJF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    custJF.setSize(500, 499);
    custJF.add(new PainComponentDemo());
    custJF.setVisible(true);
  } // driver function ends
} // main class ends

Ausgang:

Java Paint-Komponente

Sarwan Soomro avatar Sarwan Soomro avatar

Sarwan Soomro is a freelance software engineer and an expert technical writer who loves writing and coding. He has 5 years of web development and 3 years of professional writing experience, and an MSs in computer science. In addition, he has numerous professional qualifications in the cloud, database, desktop, and online technologies. And has developed multi-technology programming guides for beginners and published many tech articles.

LinkedIn

Verwandter Artikel - Java Swing