2017-10-12 1 views
1

Java에서 10x10 격자를 만들려고 시도 했으므로 drawline 함수를 사용하려고했습니다. 그러나, 내가 프로그램을 실행하면 볼 수있는 모든 창이 닫히지 않는 빈 창이 나타납니다. 이들은 그리드를 그려 내 두 클래스입니다. 누군가이 코드가 작동하지 않는 이유를 설명해 줄 수 있습니까? System.out.println("paintGrid invoked");
가 이제까지 호출받을 않습니다Java 프레임의 빈 프레임

import java.awt.*; 

public class RandomWalk extends Canvas{ 

    int width, height; 

    public RandomWalk(int w, int h) { 
     setSize(width = w, height = h); 
    } 

    public void paintGrid(Graphics g) { 
     width = getWidth(); 
     height = getHeight(); 
     for(int i = 0; i < 11; i++) { 
      g.drawLine(i*width/10, 0, i*width/10, height); 
      g.drawLine(0, i*height/10, width, i*height/10); 
     } 
    } 
} 

import java.awt.*; 

public class GridViewer extends Frame{ 

    GridViewer(String title, int w, int h) { 
     setTitle(title); 
     RandomWalk grid = new RandomWalk(w, h); 
     add(grid); 
    } 

    public static void main(String[] args) { 
     new GridViewer("Random Walk", 300, 300).setVisible(true); 
    } 
} 

답변

0

을 당신은 u는 당신의 목표 를 달성하기 위해 Canvas 클래스 paint() 방법을 재정의해야하고 창 폐쇄를 들어, 창을 처분 (또는 u 단순히 javax.swing.JFrame 클래스를 대신 사용할 수 WindowListener를 추가해야) java.awt.Frame

는 아래의 코드를 참조

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

public class RandomWalk extends Canvas { 

    int width, height; 

    public RandomWalk(int w, int h) { 
     setSize(width = w, height = h); 
    } 

    @Override 
    public void paint(Graphics g) { 
     width = getWidth(); 
     height = getHeight(); 
     for (int i = 0; i < 11; i++) { 
      g.drawLine(i * width/10, 0, i * width/10, height); 
      g.drawLine(0, i * height/10, width, i * height/10); 
     } 
    } 
} 

public class GridViewer extends Frame { 

    GridViewer(String title, int w, int h) { 
     setTitle(title); 
     setSize(w, h); 
     RandomWalk grid = new RandomWalk(w, h); 
     add(grid); 

     addWindowListener(new WindowAdapter() { 
      @Override 
      public void windowClosing(WindowEvent e) { 
       dispose(); 
      } 
     }); 
    } 

    public static void main(String[] args) { 
     new GridViewer("Random Walk", 300, 300).setVisible(true); 
    } 
} 
관련 문제