关于java paint()的原理的问题

util_uknow 2016-08-30 11:40:21
package package2;
import java.util.*;
import static java.lang.System.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Letitbe_31 {
public static void main(String [] args){
JFrame window=new JFrame();
window.setBounds(0,0,500,500);
window.setVisible(true);
Pane panel=new Pane();
window.add(panel);
//panel.paintComponent(panel.getGraphics());
long time=System.currentTimeMillis();
time=System.currentTimeMillis();
Timer timer=new Timer();
for(;System.currentTimeMillis()-time<1000;);
panel.change=true;
panel.repaint();
}

}

class Pane extends JPanel{
boolean change=false;
public Pane(){
setSize(500,500);
}
public void paint(Graphics g){
if(change==false){
long time=System.currentTimeMillis();
for(int i=0;i<=10;i++){
Color myredcolor = new Color(i*25+5,0,0);
g.setColor(myredcolor);
//for(;System.currentTimeMillis()-time<1000;);
g.fillRect(i*32+5,2,28,28);
time=System.currentTimeMillis();
}
for(int i=0;i<=10;i++){
Color mygreencolor = new Color(0,i*25+5,0);
g.setColor(mygreencolor);
//for(;System.currentTimeMillis()-time<1000;);
g.fillRect(i*32+5,32,28,28);
time=System.currentTimeMillis();
}
for(int i=0;i<=10;i++){
Color mybluecolor = new Color(0,0,i*25+5);
g.setColor(mybluecolor);
//for(;System.currentTimeMillis()-time<1000;);
g.fillRect(i*32+5,62,28,28);
time=System.currentTimeMillis();
}
}
else{
long time=System.currentTimeMillis();
for(int i=0;i<=10;i++){
Color myredcolor = new Color(i*25+5,0,0);
g.setColor(myredcolor);
//for(;System.currentTimeMillis()-time<1000;);
g.fillRect(i*32+5,92,28,28);
time=System.currentTimeMillis();
}
for(int i=0;i<=10;i++){
Color mygreencolor = new Color(0,i*25+5,0);
g.setColor(mygreencolor);
//for(;System.currentTimeMillis()-time<1000;);
g.fillRect(i*32+5,112,28,28);
time=System.currentTimeMillis();
}
for(int i=0;i<=10;i++){
Color mybluecolor = new Color(0,0,i*25+5);
g.setColor(mybluecolor);
//for(;System.currentTimeMillis()-time<1000;);
g.fillRect(i*32+5,142,28,28);
time=System.currentTimeMillis();
}
}
}
}

class Timer implements Runnable{
Thread timer;
int i=0;
public Timer(){
timer=new Thread(this,"timer");
timer.start();
}
public void run(){
while(true){
try{
Thread.sleep(1000);
}catch(InterruptedException e){
out.println(e);
}
++i;
out.println(i);
}
}
}


代码写的丑正在改进中...
哪位前辈能告诉我
为什么把paint()中任何一行for(;System.currentTimeMillis()-time<1000;);的注释去掉,结果都是先是10秒的空白,然后然后一次性把所有图都绘了出来?
在main()中写的时间间隔是可以显现的,但是在paint()里就没办法操作它的绘制间隔了...不知道我描述的清不清楚
...全文
298 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
util_uknow 2016-08-31
  • 打赏
  • 举报
回复
循环体为空就是制造一个1秒的间隔啊 应该跟sleep()差不多吧,因为我c语言常这么写... 我想的是每画一个方块空一秒,但是效果是空十秒画一排
静默QL 2016-08-30
  • 打赏
  • 举报
回复
for 循环后面为什么加分号呢?? 加分号不就表示等10秒的for循环吗

50,545

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧