【问题标题】:Runnable java applet works only when resizing可运行的 Java 小程序仅在调整大小时有效
【发布时间】:2014-01-29 11:46:05
【问题描述】:

这个小小程序应该将一个字符串从小程序框架的底部移动到顶部,当它到达顶部时,它应该再次从底部开始。问题是它只有在我调整小程序窗口大小时才会移动。它自己不动,为什么会这样?

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;
    }
}

【问题讨论】:

  • Why this dosent work? 是一个糟糕的标题。标题应该代表您的问题。请编辑。
  • 考虑更改您的标题
  • 请参阅this,了解如何使用Timer 制作动画。
  • Applet 没有paint() 方法,您需要将JComponent 添加到容器并对其进行绘制。

标签: java applet


【解决方案1】:

线程未启动

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

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

【讨论】:

    猜你喜欢
    • 2010-09-27
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 2011-03-29
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多