Paint () và Repaint ()
- paint (): Phương pháp này chứa các hướng dẫn để sơn thành phần này. Trong Java Swing, chúng ta có thể thay đổi phương thức paintComponent () thay vì phương thức paint () như lệnh gọi paint paintBorder (), paintComponent () và paintChildren () các phương pháp. Chúng tôi không thể gọi phương thức này trực tiếp thay vào đó chúng tôi có thể gọi repaint () .
- sơn lại () :Không thể ghi đè phương thức này. Nó kiểm soát update () -> paint () xe đạp. Chúng ta có thể gọi phương thức này để yêu cầu một thành phần tự sơn lại. Nếu chúng ta đã làm bất cứ điều gì để thay đổi giao diện của thành phần nhưng không thay đổi kích thước thì chúng ta có thể gọi phương thức này.
Ví dụ
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); } }
Trong chương trình trên, nếu chúng ta bấm vào màn hình có thể vẽ hình vuông. Trong mousePressed () , chúng ta có thể gọi repaint () phương pháp.
Đầu ra