之前几篇博客里的例子,大家运行过的话,就能看出来,界面是需要刷新的。
JPanel里的绘制方法是paintComponent,界面上的东西都是这个方法画出来的。
JPanel对象有一个repaint方法,从字面意思大家也看的懂,这个是重绘方法。
可以粗浅的这么认为:每调用一次repaint,就会执行一次paintComponent
例如:界面上有一个方块,位置在坐标(20,20)处,
按一下向右的方向键,需要方块往右移动一个像素,变为坐标(21,20)
那么在按键监听方法里,判断按下的如果是向右方向键,就把方块的横坐标加1
然后调用repaint,重新绘制后,方块的位置就右移了一个像素。
注意:虽然只是方块动了,但整个画布都重新绘制,否则方块就是增大,而非右移。
再说一下坐标系,在图形界面开发中,界面的坐标都是以左上角为基准。
左上角就是(0,0),往右是横坐标递增,往下是纵坐标递增。
一个界面的大小是多大,右下角的坐标值就是多少。
想象一个黑板,在上面画一个方块,现在需要把它右移一下,
怎么做呢,先擦掉,在靠右的地方重新画一次,对吧。
这里的擦掉、重绘,对应的就是JPanel的 repaint 方法!
现在,问题来了,如果我们要方块不停的往右,怎么做呢?
当然就是:不停的让方块横坐标加1、再调用重绘。。
可是,如何让程序不停的运行这个逻辑呢?
那就需要用到线程了,且听下回分解吧。。
本来准备写线程的,突然又觉得,前面几篇贴的代码太多了,可能大家看的累,干脆整一篇纯文字的吧。这篇可能有点水了,台哥作为一个老的掉牙的程序员,有时候也分不清,哪里需要细讲,哪里需要粗略。所以,宁多写十句、不少写一句吧。如果大家都看懂了,并非我讲的好,而是因为,大家很聪明!!
欢迎关注:台哥编程课堂,https://www.cnblogs.com/chaohi/
原文地址:https://www.cnblogs.com/chaohi/p/10766687.html
时间: 2024-10-05 12:24:32