Runnable java applet仅在调整大小时有效

时间:2014-01-29 11:46:05

标签: java applet

这个小applet应该从applet框架的底部到顶部移动一个String,当它到达顶部时它应该再次从底部开始。问题是当我调整applet窗口大小时它才会移动。它不会自行移动,为什么它会这样运作?

import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Zad1 extends Applet implements Runnable {

    Thread runner;
    int yPos = 500;

    public void start() {
        if (runner == null) {
            runner = new Thread(this);
        }
    }

    public void stop() {
        if (runner != null) {
            runner = null;
        }
    }

    public void run() {
        while (true) {
            repaint();
            try {
                Thread.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }

    }

    public void paint(Graphics g) {
        g.drawString("Hello java", 50, yPos);
        yPos--;
        if (yPos < -30)
            yPos = 500;
    }
}

1 个答案:

答案 0 :(得分:1)

线程未启动

        runner = new Thread(this);
        runner.start(); // <----------- Insert this!

但请注意,这个applet的样式在很多方面都很糟糕(例如,“paint”中应该没有逻辑,你可能根本不应该覆盖Applet的“paint”,你应该考虑使用JApplet等。 ..)。您应该阅读http://docs.oracle.com/javase/tutorial/uiswing/components/applet.html和其他示例。