Почему короткий отрезок появляется вместо полного линейного графика? - PullRequest
0 голосов
/ 16 января 2012

Мой пользовательский Canvas расширяет Canvas и переопределяет метод 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!
        }

    }

Ожидаемый результат здесь должен быть линейным графиком. Вместо этого появляется один короткий сегмент с разной позицией и отношением.

Что я здесь не так делаю?

1 Ответ

0 голосов
/ 16 января 2012
  1. Обычно вы никогда не вызываете paint () из своего кода. paint () будет вызываться из среды AWT. Таким образом, ваш цикл должен перейти в метод paint ().

  2. Что такое двигатель?

...