Java 为什么会出现短线段而不是完整的直线图?

Java 为什么会出现短线段而不是完整的直线图?,java,awt,linegraph,Java,Awt,Linegraph,我的自定义画布扩展了画布,并覆盖了paint()方法,如下所示 @Override public void paint(Graphics g) { Rectangle bounds = getBounds(); g.translate(0, (bounds.y + bounds.height) / 2); int maxX = (int) bounds.getMaxX(); g.drawLine(currX, currY, currX + 5, m_nex

我的自定义画布扩展了画布,并覆盖了paint()方法,如下所示

@Override
public void paint(Graphics g) {

    Rectangle bounds = getBounds();

    g.translate(0, (bounds.y + bounds.height) / 2);

    int maxX = (int) bounds.getMaxX();

    g.drawLine(currX, currY, currX + 5, m_nextY);

    currX = currX > maxX ? maxX : currX + 5;
    currY = m_nextY;

    if (currX >= maxX) {
        currX = 0;
    }

}

int currX = 0;
int currY = 0;
int m_nextY;

public void setNextY(int pNext) {
    m_nextY = pNext;
}
程序入口点运行一个循环来检索按比例缩放的随机数,并设置Y坐标的位置,如下所示

java.util.Random engine = new Random();

while (Thread.currentThread().isAlive()) {
        myCanvas.setNextY((int) (engine.nextFloat() * -15f));
        myCanvas.paint(getGraphics());
        try {
            Thread.sleep(300);
        } catch (InterruptedException ex) {
         // Balderdash!
        }

    }
这里的预期输出应该是一个折线图。取而代之的是一个具有不同位置和姿态的单一短段

我做错了什么

  • 您通常从不从代码中调用paint()。将从AWT框架调用paint()。因此,循环应该进入paint()方法

  • 什么是发动机


  • 引擎是java.util.Random的一个实例