2013-10-03 176 views
3

我正在嘗試使用for循環創建笛卡爾網格。以下是我的代碼到目前爲止的一部分;當我運行它時,它並沒有形成一系列的線條,而是產生了一個看起來像是白​​色面板的窗口,它顯着降低了我的電腦速度。事實上,我必須啓動任務管理器和結束任務,因爲它甚至不能正常關閉。在java中繪製網格

public void paintComponent(Graphics g) 
{ 
    int width = getWidth(); 
    int height = getHeight(); 
    super.paintComponent(g); 

    int xstart=0; 

    for(int i = 1; i <= 10; i = i++) 
    { 
     xstart = i*(width/10); 
     g.drawLine(xstart, 0, xstart, height); 
    } 
} 
+0

你可以參考這個: http://stackoverflow.com/questions/15421708/how-to-draw-grid-using-swing-class-java-and-detect-mouse-position-when-點擊並 –

回答

1

for循環中的增量錯誤。取而代之的

i = i++ 

應該是簡單

i++ 

的後置運算符返回正在被分配回i,所以i實際上從未改變的i,舊值。

3

其實你需要兩個for循環一個用於行和一個用於列而不是你只使用一個,這不足以繪製網格。

我已經繪製了網格作爲我的任務工作,我已經與你分享。這將幫助你得到找到您的編碼問題...

enter image description here

import java.awt.*; 
    import java.awt.event.*; 

    class Grids extends Canvas { 
     int width, height, rows, columns; 

     Grids(int w, int h, int r, int c) { 
     setSize(width = w, height = h); 
     rows = r; 
     columns = c; 
     } 
     public void paint(Graphics g) { 
     int k; 
     width = getSize().width; 
     height = getSize().height; 

     int htOfRow = height/(rows); 
     for (k = 0; k < rows; k++) 
      g.drawLine(0, k * htOfRow , width, k * htOfRow); 

     int wdOfRow = width/(columns); 
     for (k = 0; k < columns; k++) 
      g.drawLine(k*wdOfRow , 0, k*wdOfRow , height); 
     } 
    } 
    public class DrawGrids extends Frame { 
     DrawGrids(String title, int w, int h, int rows, int columns) { 
     setTitle(title); 
     Grids grid = new Grids(w, h, rows, columns); 
     add(grid); 
     } 
    } 
    public static void main(String[] args) { 
     new DrawGrids("Draw Grids", 200, 200, 2, 10).setVisible(true); 
     } 
    } 
0

嘿傢伙我只是用你的p的小片,試圖修復它,我只是創建了一個字符串建築藝術這裏是代碼,如果你想這樣做well.int width = getWidth(); int height = getHeight();

int xstart=0; 

    for(int i = 1; i <= 10; i++) 
    { 

    xstart = i*(height/10); 
    page.drawLine(xstart, 0, width, xstart); 
    }