下面的java代码每次重绘的时候,之前的红色的圆没有被擦除掉,是怎么回事?

importjava.awt.Color;importjava.awt.Graphics;importjava.awt.event.WindowAdapter;impor... import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class TankClient extends JFrame{
private JPanel mainPanel;
private int x=50,y=50;
@Override
public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.red);
g.fillOval(x, y, 30, 30);
g.setColor(c);
y += 5;
}

public TankClient(){
lauchFrame();
}
public void lauchFrame(){
mainPanel = new JPanel();
mainPanel.setBackground(Color.green);
this.add(mainPanel);
this.setBounds(300,100,800,600);
this.setVisible(true);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setResizable(false);
new Thread(new PaintThread()).start();
}
public static void main(String[] args) {
new TankClient();
}
/**
* 创建一个Tread每隔相同时间进行重画,从而改变坦克位置
* @author Administrator
*/
private class PaintThread implements Runnable{
public void run() {
while(true){
repaint();//重画组件
try {
Thread.sleep(100);//睡100ms
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
展开
 我来答
迅捷曝巴蛋藕aS0b9
推荐于2019-08-24 · TA获得超过665个赞
知道小有建树答主
回答量:138
采纳率:100%
帮助的人:76万
展开全部
repaint确实重新画了,但是并不会擦掉以前画的内容。
在重写的那个paint方法中第一行加上如下一句:
g.clearRect(0, 0, this.getWidth(), this.getHeight());
//把你之前画的内容删掉

repaint() 方法具有的功能仅仅就是 重新调用一次paint() 方法而已。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式