2013-10-03 4 views
3

for 루프를 사용하여 데카르트 그리드를 만들려고합니다. 아래는 지금까지 제 코드의 일부입니다. 필자가 실행할 때 일련의 선을 만들지 않고 흰색 패널로 보이는 창이 생성되고 컴퓨터가 상당히 느려집니다. 사실 정상적으로 닫히지 않기 때문에 작업 관리자를 시작하고 작업을 종료해야합니다.자바에서 그리드를 그리기

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

실제로 행에 대해 하나는 열에 대해 하나는 열에 대해 두 개가 필요합니다. 대신 하나를 사용 했으므로 그리드를 그릴 수 없습니다.

나는 과제물로 그리드를 그렸습니다. 나는 당신과 공유하고 있습니다. 그것은

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

가 얘들 아 난 그냥 시도하고 그것을 해결하기 위해 당신의 페이지의 작은 조각을 사용 ... 당신은 당신의 코드에서 문제를 찾을 얻을 도움이 될 것입니다 그리고 난 그냥 문자열 아트 건설을 생성 여기에 코드도 있습니다. 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); 
    } 
관련 문제