2017-10-12 84 views
1

我一直在嘗試在Java中創建一個10x10網格,並且我嘗試使用drawLines函數來實現此目的。但是,當我運行該程序時,我所看到的只是一個空白的窗口,不會關閉。這是我的兩個課程來繪製網格。有人能解釋爲什麼這個代碼不起作用嗎?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需要重寫paint()方法Canvas類來實現自己的目標 和閉窗,你需要添加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); 
    } 
}