解决方案 »
- 如何Drag and Drop一个Swing控件?
- CallableStatement 问题
- 怎样判别一个字符中否中文
- super!?
- 关于服务器和客户端之间数据传输的问题
- ◆发生了奇怪的问题∶怎么Tomcat自带的例子程序有的可以运行,有的却不能。(前天还都是好的)◆
- 我是新手,我的class不运行,请帮忙。
- 《java 2 编程 21天自学通》清华出版社出的,是翻译的LAURA LEMAY ,ROGERS CADENHEAD 的原版,不知道这本书怎么样?
- 通过循环建立几个类?该如何做?
- 请教一个简单问题,谢谢
- Java Socket入门案例求解
- java呼叫远端主机class在远端运行之后传回字符串
谢谢,我想知道的是:如果不把MyPanel做成线程,即不要第二个repaint。子弹坐标也在变,为什么第一个repaint不起作用?代码在这段:if (e.getKeyCode() == KeyEvent.VK_J)
{
this.mytank.fire();//进入调用子弹线程,子弹坐标已经在变
}
this.repaint();//这里repaint为什么不起作用?
你好,请问第一个repaint就在按J事件处理下面,为什么不会重绘?
没说事件处理的repaint不会重绘啊。说的是:如果我开炮后,就啥按钮都不按,你怎么触发重绘?怎么让子弹能够在屏幕上动起来?
具体来说,
1.现在这个游戏的情况就是每隔100毫秒重绘一次,不管你按不按键盘。而当你每按一下键盘,Mypanel会额外重绘一次。
2.如果只保留键盘监听里的,删掉线程里的repaint(),那么mypanel不会每隔100毫秒重绘一次,但是你按一下键盘依然会重绘,如楼上所说,这时候你发射炮弹,炮弹坐标是一直改变的,但因为没有重绘,所以看不到。如果你发射完炮弹,马上按键盘让你的坦克动起来,这时候mypanel重绘了,你就能看到炮弹了
3.同样如楼上所说,如果只保留线程中的repaint(),删掉键盘监听中的,没有什么影响,但是估计100毫秒的刷新频率有点低,建议把sleep改成50或者30,看起来比较流畅另外建议LZ不要照着韩老师的写,需要用到的知识点明白了,然后照着教程中所达到的效果,用自己的思路来写,或许思路不太好,写出来的代码不怎么样,但是过程中遇到种种问题,在解决这些问题的过程中的思考我觉得还是很有好处的
同样作为初学者,LZ我们共同努力呦!