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

Java에서 paint() 메소드와 repaint() 메소드의 차이점은 무엇입니까?

<시간/>

Paint() 및 Repaint()

  • 페인트(): 이 메서드는 이 구성 요소를 그리기 위한 지침을 보유합니다. Java Swing에서는 페인트가 paintBorder(),를 호출할 때 paint() 메소드 대신 paintComponent() 메소드를 변경할 수 있습니다. paintComponent()paintChildren() 행동 양식. 이 메서드를 직접 호출할 수 없으며 대신 repaint()를 호출할 수 있습니다. .
  • 다시 칠하기() :이 메서드는 재정의할 수 없습니다. update() -> paint() 를 제어합니다. 주기. 이 메서드를 호출하여 구성 요소를 다시 칠할 수 있습니다. 구성 요소의 모양을 변경했지만 크기는 변경하지 않은 경우 이 메서드를 호출할 수 있습니다.

예시

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class PaintRepaintTest extends JPanel implements MouseListener {
   private Vector v;
   public PaintRepaintTest() {
      v = new Vector();
      setBackground(Color.white);
      addMouseListener(this);
   }
   public void paint(Graphics g) { // paint() method
      super.paint(g);
      g.setColor(Color.black);
      Enumeration enumeration = v.elements();
      while(enumeration.hasMoreElements()) {
         Point p = (Point)(enumeration.nextElement());
         g.drawRect(p.x-20, p.y-20, 40, 40);
      }
   }
  public void mousePressed(MouseEvent me) {
      v.add(me.getPoint());
      repaint(); // call repaint() method
   }
   public void mouseClicked(MouseEvent me) {}
   public void mouseEntered(MouseEvent me) {}
   public void mouseExited(MouseEvent me) {}
   public void mouseReleased(MouseEvent me) {}
   public static void main(String args[]) {
      JFrame frame = new JFrame();
      frame.getContentPane().add(new PaintRepaintTest());
      frame.setTitle("PaintRepaint Test");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setLocationRelativeTo(null);
      frame.setSize(375, 250);
      frame.setVisible(true);
   }
}

위의 프로그램에서 화면을 클릭하면 사각형을 그릴 수 있습니다. mousePressed() 메소드에서 repaint()를 호출할 수 있습니다. 방법.

출력

Java에서 paint() 메소드와 repaint() 메소드의 차이점은 무엇입니까?