【问题标题】:Why does a short line segment appear instead of a full line graph?为什么会出现短线段而不是完整的折线图?
【发布时间】:2012-01-16 10:49:58
【问题描述】:

我的自定义 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!
        }

    }

这里的预期输出应该是一个折线图。相反,出现的是具有不同位置和态度的单个短段。

我在这里做错了什么?

【问题讨论】:

    标签: java awt linegraph


    【解决方案1】:
    1. 您通常从不从代码中调用paint()。 paint() 将从 AWT 框架中调用。所以你的循环应该进入paint()方法。

    2. 什么是引擎?

    【讨论】:

    • engine 是 java.util.Random 的一个实例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 2018-01-31
    • 2021-09-03
    相关资源
    最近更新 更多