Paint() और Repaint()
- paint(): इस विधि में इस घटक को पेंट करने के निर्देश होते हैं। Java Swing में, हम paint() विधि के बजाय paintComponent() विधि को बदल सकते हैं क्योंकि paint paintBorder(), paintComponent() और paintChildren() विधियों को कॉल करता है। हम इस विधि को सीधे नहीं बुला सकते, इसके बजाय हम repaint() को कॉल कर सकते हैं।
- 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() विधि
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(); // repaint() विधि को कॉल करें
}
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() विधि को कॉल कर सकते हैं।
आउटपुट
