자바 페인트 구성 요소

Sarwan Soomro 2024년2월15일
자바 페인트 구성 요소

먼저 Java paintComponent() 메서드가 작동하는 방식을 살펴보겠습니다. 언제 호출되며 하위 시스템 및 클래스의 구조는 무엇입니까?

마지막으로 이 방법을 사용하여 화면에 그래픽을 그리는 방법을 보여드리겠습니다. 자세한 내용을 보려면 계속 읽으십시오.

Java의 PaintComponent() 메서드

모든 페인팅 및 그래픽 코드를 보관할 수 있는 위치를 고려하십시오. 기본적으로 잠겨 있으며 요청할 때만 들어갈 수 있습니다.

그것은 무엇을 나타냅니까? 페인팅할 시간이 되면 이 메서드가 시작됩니다.

반면에 페인팅은 클래스 계층에서 더 높은 곳에서 시작합니다. 클래스 계층 구조 분석: java.awt.Component.

페인팅 하위 시스템은 구성 요소를 렌더링해야 할 때마다 이 메서드를 호출합니다.

Java paintComponent()는 어떻게 호출됩니까? Java AWT는 콜백 메커니즘을 지원합니다.

AWT 콜백 메커니즘이 중량 구성 요소와 경량 구성 요소 모두에 대해 동일하다는 점은 주목할 가치가 있습니다. 이러한 구성요소는 특정 페인트 요청이 호출/트리거되는 방식에 관계없이 페인팅에 사용됩니다.

프로그램은 재정의된 특정 메서드 내에 렌더링 코드를 배치해야 합니다. 그리고 동일한 툴킷이 페인팅할 때 이 메서드를 호출합니다.

메모
재정의해야 하는 메서드는 java.awt.Component입니다.

통사론:

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

또한 javax.swing.JComponentpaint 메서드를 3개의 개별 메서드로 분할하여 이 클래스를 확장합니다.

  1. 보호된 빈 페인트 구성 요소(그래픽 g)
  2. 보호된 빈 페인트 테두리(그래픽 g)
  3. 보호된 보이드 페인트 칠드런(그래픽 g)

우리는 당신이 지금까지 이 방법의 기본을 이해했다고 믿습니다. 이제 paintComponent()와 함께 일반적으로 사용하는 다른 방법에 대해 논의하겠습니다.

또한 지금은 앞서 논의한 시스템에 넘겨줄 때가 아닙니다. 그럼에도 불구하고 repaint() 메서드를 사용하여 디스플레이를 새로 고치도록 시스템에 요청할 수 있습니다.

메모
repaint()에 대한 호출은 paintComponent()에 대한 호출로 이어집니다.

그림판을 사용하는 모범 사례:

  1. 렌더링 코드를 어디에도 두지 마세요. 페인트 콜백 범위 밖에서 호출될 수 있습니다. 이러한 코드는 페인트하기에 부적절할 때 호출될 수 있습니다.
  2. 구성 요소가 표시되거나 유효한 Graphics 개체에 액세스하기 전에는 프로그램이 paint()를 직접 호출하지 않는 것이 좋습니다.

그리기 작업은 AWT에 의해 비동기적으로 요청됩니다. 아이디어를 얻으려면 다음 코드 블록을 확인하십시오.

암호:

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)

다음은 완전한 Java 데모 예제입니다.

암호:

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

출력:

자바 페인트 구성 요소

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

관련 문장 - Java Swing