package applet;
import java.applet.Applet;
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Applet1 extends Applet implements Runnable,ActionListener
{
Thread runner;
Image h;
Button g;
int y;
int ;//标记paint()函数执行了几次
public void init()
{
h=getImage(getDocumentBase(),"1.jpg");
g=new Button();
g.addActionListener(this);
add(g);
}
public void paint(Graphics g)
{
g.drawImage(h,y,100,this);
++;
}
public void run()
{
for(y=1;y<=200;y++)
{
repaint();
try
{
Thread.sleep(100);
}catch(Exception ee){}
repaint();
}
}
public void actionPerformed(ActionEvent e)
{
runner = new Thread(this);
runner.start();
}
}
改动一下就可以了..希望能给我加130分 呵呵..
看一下例子就明白了.
import java.applet.Applet;
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class Applet1 extends Applet implements Runnable,ActionListener
{
Thread runner;
Image h;
Button g;
int y;
int ;//标记paint()函数执行了几次
public void init()
{
h=getImage(getDocumentBase(),"1.jpg");
g=new Button();
g.addActionListener(this);
add(g);
}
public void paint(Graphics g)
{
g.drawImage(h,y,100,this);
++;
}
public void run()
{
for(y=1;y<=200;y++)
{
repaint();
try
{
Thread.sleep(100);
}catch(Exception ee){}
repaint();
}
}
public void actionPerformed(ActionEvent e)
{
runner = new Thread(this);
runner.start();
}
}
改动一下就可以了..希望能给我加130分 呵呵..
看一下例子就明白了.
如果把repaint()放在paint()里面是会的,但是你的action方法 是没有事件触发它的,所以repaint()无法调用。你的开头就没有让这个applet进行事件监听,怎么会没有问题呢,除非你把这些事件去掉,保证你的repaint()一定被调用才可以。
而且你的 Thread.sleep(100);表示的线程问题可能也有问题你这样试试看,这只是模拟解释你的问题。
要写线程的话,还是 DESL这样的做import java.applet.Applet;
import java.awt.*;
public class asd extends Applet implements Runnable
{
Image h;
Button g;
int y;
int ;//标记paint()函数执行了几次
Thread paintA=null;
public void init()
{
h=getImage(getDocumentBase(),"1.jpg");
g=new Button();
add(g);
}
public void paint(Graphics g)
{
g.drawImage(h,y,100,this);
++;
} public void start(){
if(paintA == null){
paintA = new Thread(this);
paintA.start(); }
} public void stop()
{
paintA = null;
} public void run()
{
while (paintA != null)
{
for(y=0;y<200;++y)
{
try {
paintA.sleep(100);
}
catch (InterruptedException e) {}
repaint();
showStatus(String.valueOf());
}
paintA.stop();
}
}
你可以在jbuilder里面好好的调试一下。
这还不是 不用事件监听的?
这个问题现在答案不是出来了吗? 除非你的事件被触发了 才会调用repaint(),这样你的程序是没错的,不过 你的event参数 和object参数可以改改,用event的子类制定特定的监听,然后将Runnable接口实现,你想用一个线程还是多个线程不就是随便你搞了!怎么 还想不通?