为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕尼黑5688855 2022-05-25 19:15:35
我是初学java的新手我在重写的paint方法中加入了一个计时器,想要在绘出文字3秒之后,绘制出新的文字paint部分的代码如下:@Overridepublic void paint(Graphics g) {// TODO Auto-generated method stubsuper.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() {@Overridepublic 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秒后输出了。请问这是什么原因?
查看完整描述

1 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

Graphics在paint过后会被dispose()。所以在异步的线程中你的Graphics已经不能再使用了。要做到3秒后更新可以在类的里面定义一些作图的属性,包括颜色、位置等,然后在timer里面修改属性的值然后调用repaint方法

查看完整回答
反对 回复 2022-05-30
  • 1 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号