2017-10-12 8 views
1

私はJavaで10x10グリッドを作成しようとしていましたが、drawLines関数を使用して描画しようとしました。しかし、私がプログラムを実行すると、私が見るのは空白のウィンドウで、それは閉じないでしょう。これらはグリッドを描画する私の2つのクラスです。誰かがこのコードがうまくいかない理由を説明できますか?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

ようpaintGridにプリントアウトを追加します。System.out.println("paintGrid invoked");
それが今までに呼び出さしていますか?
これは役立つかもしれない:Performing Custom Painting

0

をあなたはuはあなたの目標 を達成するためにCanvasクラスでpaint()メソッドをオーバーライドする必要があるとウィンドウが閉じられるのを、あなたは窓を配置するWindowListenerを追加する必要があります(またはuは単に代わりにjavax.swing.JFrameクラスを使用することができます)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); 
    } 
} 
関連する問題