java的repaint
时间: 2023-11-20 07:55:16 浏览: 128
在Java中,repaint()函数用于重新绘制组件。当我们需要更新组件的外观时,可以调用repaint()函数。repaint()函数会自动调用paint()函数,paint()函数会重新绘制组件的外观。我们可以在paint()函数中实现自己的绘制逻辑,从而实现自定义的组件外观。
以下是一个简单的Java程序,演示了如何使用repaint()函数重新绘制组件:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class RepaintDemo extends JPanel {
private int x, y;
private Color color;
public RepaintDemo() {
color = Color.GREEN;
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON1) {
x = e.getX();
y = e.getY();
color = Color.GREEN;
repaint();
} else if (e.getButton() == MouseEvent.BUTTON3) {
x = e.getX();
y = e.getY();
color = Color.RED;
repaint();
} else if (e.getClickCount() == 2) {
x = 0;
y = 0;
color = Color.WHITE;
repaint();
}
}
});
}
public void paint(Graphics g) {
super.paint(g);
if (color == Color.GREEN) {
g.setColor(color);
g.fillOval(x, y, 50, 50);
} else if (color == Color.RED) {
g.setColor(color);
g.fillRect(x, y, 50, 50);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Repaint Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.add(new RepaintDemo());
frame.setVisible(true);
}
}
```
在这个程序中,我们创建了一个继承自JPanel的类RepaintDemo。在RepaintDemo的构造函数中,我们添加了一个MouseListener,用于监听鼠标事件。当用户单击鼠标左键时,我们记录下鼠标的位置和颜色,并调用repaint()函数重新绘制组件。当用户单击鼠标右键时,我们同样记录下鼠标的位置和颜色,并调用repaint()函数重新绘制组件。当用户双击鼠标左键时,我们将颜色设置为白色,并调用repaint()函数清空所有已画的图形。
在RepaintDemo的paint()函数中,我们根据颜色绘制不同的图形。如果颜色为绿色,我们绘制一个绿色的圆形;如果颜色为红色,我们绘制一个红色的矩形。
阅读全文