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()를 호출할 수 있습니다. 방법.
출력