2012-01-16 63 views
0

我的自定义画布延伸帆布,并覆盖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! 
     } 

    } 

这里预期的输出应该是一个折线图。相反,只有一个短小的细分市场和姿态各异。

我在这里做错了什么?

回答

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

  2. 什么是引擎?

+0

engine是java.util.Random的一个实例 – Everyone 2012-01-16 17:56:34

相关问题