Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

อะไรคือความแตกต่างระหว่างวิธีการทาสี () และวิธีการทาสี () ใน Java?


ทาสี() และ ทาสีใหม่()

  • สี(): วิธีนี้มีคำแนะนำในการลงสีส่วนประกอบนี้ ใน 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() วิธีการ

ผลลัพธ์

อะไรคือความแตกต่างระหว่างวิธีการทาสี () และวิธีการทาสี () ใน Java?