| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1276 人关注过本帖
标题:请问如何在使用循环绘制图形时使每个图形的显示之间有一定的延迟时间?
只看楼主 加入收藏
Dreamawaker
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-10-12
收藏
 问题点数:0 回复次数:13 
请问如何在使用循环绘制图形时使每个图形的显示之间有一定的延迟时间?

请问如何在使用循环绘制图形时使每个图形的显示之间有一定的延迟时间?
以下面的这个程序为例。多谢。
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import java.awt.event.*;

public class EX12_20 extends JFrame
{
public EX12_20()
{
setSize( 400, 400 );
setVisible( true );
}

public void paint( Graphics g )
{
super.paint( g );
g.setColor( Color.BLUE );
for( int i=0; i<100; i++)
g.drawLine( (int)(Math.random()*400), (int)(Math.random()*400), (int)(Math.random()*400),(int)(Math.random()*400));
repaint();
}

public static void main( String args[] )
{
EX12_20 application = new EX12_20();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}

搜索更多相关主题的帖子: 图形时 import awt java 绘制 
2006-11-11 13:05
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 

最好不要有paint方法里调用repaint
最好是把它放到一个线程里面去调用
这样就可以控掉重绘的速度了


可惜不是你,陪我到最后
2006-11-11 13:12
Dreamawaker
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-10-12
收藏
得分:0 
不好意思,刚学到这里……
能讲的清楚一些么………
另外,有没有可能在每画一条线的时侯都暂停一定的时间?

[此贴子已经被作者于2006-11-11 14:48:12编辑过]


2006-11-11 13:30
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
在线程里面,想怎么控制时间就可以怎么控制时间
你先把线程学好再说吧

可惜不是你,陪我到最后
2006-11-11 22:02
majkandy
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-9-2
收藏
得分:0 
Thread.sleep(1000),不过要try catch,一停了窗口也跟着卡
2006-11-11 22:27
999hits
Rank: 1
等 级:新手上路
威 望:1
帖 子:227
专家分:0
注 册:2005-10-2
收藏
得分:0 
楼上,在线程里1000是一秒,1代表的是一毫秒的,暂停1秒当然会卡了 还有就是最好新建一个线程,而不要暂停主线程,程序做的特别大的时候,主线程的负担太大,所以要新建一个线程!
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import java.awt.event.*;

public class EX12_20 extends JFrame implements Runnable
{
private Thread t;
private boolean Or;
public EX12_20()
{
setSize( 400, 400 );
setVisible( true );
Thread t=new Thread(this);
t.start();
}
public void run()
{
while(Or)
{
try
{
t.sleep(100);
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
}
}
public void paint( Graphics g )
{
super.paint( g );
g.setColor( Color.BLUE );
for( int i=0; i<100; i++)
g.drawLine(
(int)(Math.random()*400),
(int)(Math.random()*400),
(int)(Math.random()*400),
(int)(Math.random()*400));
run();
repaint();
}

public static void main( String args[] )
{
EX12_20 application = new EX12_20();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}

J3D的摸瞎人
2006-11-11 22:55
Dreamawaker
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-10-12
收藏
得分:0 
了解了。多谢各位不吝赐教。

2006-11-12 01:13
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
public void paint( Graphics g )
{
super.paint( g );
g.setColor( Color.BLUE );
for( int i=0; i<100; i++)
g.drawLine(
(int)(Math.random()*400),
(int)(Math.random()*400),
(int)(Math.random()*400),
(int)(Math.random()*400));
run();
repaint();

}
这是什么想法,怎么会这样写程序
这两句明显就是多余的,并且是严重影响性能的

可惜不是你,陪我到最后
2006-11-12 09:10
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
你应该在线程里面去调用repaint,而不要在paint里面调用repaint

可惜不是你,陪我到最后
2006-11-12 09:11
999hits
Rank: 1
等 级:新手上路
威 望:1
帖 子:227
专家分:0
注 册:2005-10-2
收藏
得分:0 
改的匆忙,多少有些错误,因为当时学校马上就要停电了!再改一下:
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
import java.awt.event.*;

public class EX12_20 extends JFrame implements Runnable
{
private Thread t;
public EX12_20()
{
setSize( 400, 400 );
setVisible( true );
Thread t=new Thread(this);
t.start();
}
public void run()
{
try
{
t.sleep(100);
}
catch(Exception ex)
{
System.out.println(ex.getMessage());
}
repaint();
}
public void paint( Graphics g )
{
super.paint( g );
g.setColor( Color.BLUE );
for( int i=0; i<100; i++)
g.drawLine(
(int)(Math.random()*400),
(int)(Math.random()*400),
(int)(Math.random()*400),
(int)(Math.random()*400));
run();//我不知道版主为什么要去掉这句,我试过了,去掉之后程序只运行100毫秒,版主能做一下答复吗??
}
public static void main( String args[] )
{
EX12_20 application = new EX12_20();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}

J3D的摸瞎人
2006-11-12 09:46
快速回复:请问如何在使用循环绘制图形时使每个图形的显示之间有一定的延迟时间?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040962 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved