Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 JPanel의 paintComponent() 메소드를 어떻게 구현할 수 있습니까?


JPanel 가벼운 컨테이너이며 보이지 않는 구성요소 자바에서. JPanel의 기본 레이아웃은 FlowLayout입니다. . JPanel이 생성된 후 JPanel 에 다른 구성요소를 추가할 수 있습니다. add() 를 호출하여 개체를 컨테이너 에서 상속된 메소드 수업.

paintComponent()

이 메서드는 JPanel 에 무언가를 그리는 데 필요합니다. 배경색을 그리는 것 외에. 이 방법은 JPanel 에 이미 있습니다. super 를 사용해야 하는 클래스 이 메서드에 무언가를 추가하고 그래픽 을 사용하는 선언 개체 매개변수로. 슈퍼 .paintComponent() 이는 일반 paintComponent() 를 나타냅니다. JPanel 메소드 패널의 배경만 처리할 수 있는 것은 첫 번째 줄에서 호출되어야 합니다.

구문

protected void paintComponent(Graphics g)

예시

import java.awt.*;
import javax.swing.*;
public class SmileyApp extends JPanel {
   @Override
   public void paintComponent(Graphics g) {
      super.paintComponent(g);
      g.setColor(Color.YELLOW);
      g.fillOval(10, 10, 200, 200);
      // draw Eyes
      g.setColor(Color.BLACK);
      g.fillOval(55, 65, 30, 30);
      g.fillOval(135, 65, 30, 30);
      // draw Mouth
      g.fillOval(50, 110, 120, 60);
      // adding smile
      g.setColor(Color.YELLOW);
      g.fillRect(50, 110, 120, 30);
      g.fillOval(50, 120, 120, 40);
   }
   public static void main(String[] args) {
      SmileyApp smiley = new SmileyApp();
      JFrame app = new JFrame("Smiley App");
      app.add(smiley, BorderLayout.CENTER);
      app.setSize(300, 300);
      app.setLocationRelativeTo(null);
      app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      app.setVisible(true);
   }
}

출력

Java에서 JPanel의 paintComponent() 메소드를 어떻게 구현할 수 있습니까?