请问有什么更简单容易的方法实现 ?即在绘出一个界面3秒之后,绘制出新的界面?

我是初学java的新手
我在重写的paint方法中加入了一个计时器,想要在绘出文字3秒之后,绘制出新的文字
paint部分的代码如下:

@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
super.paint(g);

//设置背景颜色为灰色
this.setBackground(Color.gray);

//属性设置
g.setColor(Color.white);
Font fLevel = new Font("黑体", 0, 100);
g.setFont(fLevel);

//输出字
g.drawString("测试", 280, 300);

//暂停三秒钟
Timer t = new Timer(true);
t.schedule(new TimerTask() {

@Override
public void run() {
// TODO Auto-generated method stub

//用新的矩形覆盖原来的界面
g.setColor(Color.gray);
g.fillRect(0, 0, 800, 600);

//输出延迟3秒后的字
g.drawString("测试", 20, 20);

}
}, 3000);

然而这样并没有什么反应,依旧是原来的文字。
我试着将run方法中的代码改为
system.out.println("测试");
却成功地在3秒后输出了。

请问这是什么原因?


慕尼黑5688855
浏览 113回答 1
1回答

忽然笑

Graphics在paint过后会被dispose()。所以在异步的线程中你的Graphics已经不能再使用了。要做到3秒后更新可以在类的里面定义一些作图的属性,包括颜色、位置等,然后在timer里面修改属性的值然后调用repaint方法
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java