这是我第一次编写java applet;我有我的多线程程序,我必须创建一个显示程序操作的applet;在这一刻,我尝试创建一个非常基本的小程序,简单地说#34;打印每个线程的名称。
我的问题是所有线程都在同一个对象上绘制并覆盖它,我希望每个线程分别编写自己的名称(此时我只能看到最后一个线程的名称)。
我试图创建另一个图形对象但没有工作(我认为不是正确的方法)。
这是我的applet的结构:我创建了一个监听器,它是扩展Applet和实现监听器的接口和响应器,在这里我有init(),paint(图形g)和来自监听器的函数的实现&# 39; s接口,结构是:
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
public class Responder extends Applet implements Listener {
public void init(){
//some initialization
for(int i=0; i<10; i++){
TH created = new TH(this); //this=receiver
created.start();
}
}
String toPrint;
int pos=0;
public void paint(Graphics g){
g.drawString(toPrint, 20, pos);
}
@Override
public void test(String s){
toPrint=s;
pos+=10;
repaint();
}
}
并且每个线程调用&#34; test&#34;功能
结果是在applet中我只有一个字符串,其名称为最后一个线程。我在网上搜索过,但找不到明确的例子。
有人能以正确的方式向我推荐吗?
谢谢(对不起,如果有英语错误)
答案 0 :(得分:0)
你的问题在这里
for(int i=0; i<10; i++){
TH created = new TH(this); //this=receiver
created.start();
}
您创建了10个不同的线程,并在构造函数中传递相同的applet对象。你需要一些东西:
for(int i=0; i<10; i++){
TH created = new TH(new Responder());
created.start();
}