ทาสี() และ ทาสีใหม่()
- สี(): วิธีนี้มีคำแนะนำในการลงสีส่วนประกอบนี้ ใน Java Swing เราสามารถเปลี่ยนเมธอด paintComponent() แทนเมธอด paint() เป็นการเรียกสี paintBorder(), 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() วิธีการ
ผลลัพธ์