Topic: 线程问题 |
Print this page |
1.线程问题 | Copy to clipboard |
Posted by: ballfly Posted on: 2005-10-10 14:14 //实现双线程,分别从坐标(0,0)(0,50)画到(100,0)(100,50),能编译但无显示 import java.applet.*; import java.awt.*; public class Abc extends Applet implements Runnable { Thread th1; Thread th2; int parsetime; int y; public Abc(int a,int b) {parsetime=a;y=b;} public void start() { th1=new Thread(new Abc(1000,0)); th1.start(); th2=new Thread(new Abc(2000,50)); th2.start(); } public void run() { repaint(); } public void paint(Graphics g) { try { for(int a=0;a<=100;a++) {g.drawLine(a,y,a+1,y); th1.sleep(parsetime);} } catch(InterruptedException e){} } } |
2.Re:线程问题 [Re: ballfly] | Copy to clipboard |
Posted by: snowbug Posted on: 2005-10-11 00:38 paint() 应当很快就返回,但是你的代码里要等 100 秒或是 200 秒才能执行完。 基本上,程序的设计思想不正确。画两条线不需要用两个单独的线程。你是想要写一个同时画两条线的 applet 吧?其实很简单,开一个线程,每次循环把 x 坐标值加一并调用 applet.repaint() 方法,然后再 sleep(1000) 就行了。 |
3.Re:线程问题 [Re: ballfly] | Copy to clipboard |
Posted by: ballfly Posted on: 2005-10-11 10:47 我是要同时画两条线,一条是sleep(1000),一条是sleep(2000),如何实现? |
4.Re:线程问题 [Re: ballfly] | Copy to clipboard |
Posted by: snowbug Posted on: 2005-10-13 23:24 ballfly wrote: 上面可能说得不清楚 “开一个线程,每次循环把 x 坐标值加一并调用 applet.repaint() 方法,然后再 sleep(1000) 就行了。” 如果两条线画的速度不同,那么只要每次循环时两个 x 的当前坐标增加量为不同即可,这个在那个单开的线程里完成。在 applet.paint() 方法里每次都是画两条从起点到当前坐标的线,而不用去管如何递增 x 坐标值。 |
5.Re:线程问题 [Re: ballfly] | Copy to clipboard |
Posted by: ballfly Posted on: 2005-10-14 12:10 回楼上,我要最终的X的坐标相同,即画出来的两条线段长度要相同并且头尾的X坐标要一样。请问如何实现,如可以给出写法。(我觉得只有设置等待时间才可以,但不会写法) |
6.Re:线程问题 [Re: ballfly] | Copy to clipboard |
Posted by: cxp108 Posted on: 2005-10-19 08:55 思路不对 应该是单线程,但两个X坐标的递增量不同才对 |
7.Re:线程问题 [Re: ballfly] | Copy to clipboard |
Posted by: TellMe Posted on: 2005-10-26 20:21 楼上的对啊。没有必要多线程。只是增量的问题啊 |
8.Re:线程问题 [Re: ballfly] | Copy to clipboard |
Posted by: jasonwjq Posted on: 2005-11-12 17:14 是因为没理解paint()及java图像处理的原理 应该在一个线程内改变坐标值,而在piaint()内只是画当时内一刻的点或者图像。 例如: paint(Graphics g) { g.drawImage(img, curentX, curentY, this); } |
9.Re:线程问题 [Re: ballfly] | Copy to clipboard |
Posted by: jasonwjq Posted on: 2005-11-12 17:40 是因为没理解paint()及java图像处理的原理 应该在一个线程内改变坐标值,而在piaint()内只是画当时内一刻的点或者图像。 例如: paint(Graphics g) { g.drawImage(img, curentX, curentY, this); } |
10.Re:线程问题 [Re: ballfly] | Copy to clipboard |
Posted by: oliver456 Posted on: 2005-11-19 11:55 to ballfly 你的这个程序运行好没,我也需要这样的程序 谢谢 |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |