2012-01-16 64 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

相關問題