问题描述
是这样的,我写了一个让小球在框内上下运动的代码,代码运行的结果确实是让小球在框内上下运动了,但是我觉得这个代码不正确,麻烦大家先看下我的代码,,有点多,麻烦大家了谢谢importjava.awt.*;publicclassMyBall{publicstaticvoidmain(Stringargs[]){Framew=newFrame();w.setSize(300,400);MyPanelmp=newMyPanel();w.add(mp);Threadt=newThread(mp);t.start();w.show();}}classMyPanelextendsPanelimplementsRunnable{inty=30;publicvoidpaint(Graphicsg){g.setColor(Color.white);g.fillOval(30,y-1,50,50);g.setColor(Color.black);g.fillOval(30,y,50,50);}publicvoidrun(){inta=2;//2代表向下走,1代表向上走while(true){while(a==2){y++;repaint();try{Thread.sleep(30);}catch(Exceptione){}if(y==310){a=1;}}while(a==1){y--;repaint();try{Thread.sleep(30);}catch(Exceptione){}if(y==0){a=2;}}}}}
我的疑问在paint()方法里,我这样写是因为,我想将小球不停的重画,这里的y-1也是为了消除上一个黑色小球而弄得,可是问题是,在小球向下运动的时候这个是好使的(我认为),但小球向上运动时,我觉得就不对了,应该改成y+1,可是程序却运行除了我想要的画面,就是一个小球在框内不停的运动,,是我想错了吗?另外我现在不管把g.fillOval(30,y-1,50,50);中的y-1改成y+1还是y,,出来的都是正确的画面,,这到底怎么回事。
解决方案
解决方案二:
自顶一下……