Java 中 paint() 方法和 repaint() 方法有什么不同?
Paint() 和 Repaint()
- paint():这种方法包含绘制此组件的指令。在 Java Swing 中,我们可以更改 paintComponent() 方法而不是 paint() 方法,因为 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() 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
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP