2017-10-12 3 views
1

Ich habe versucht, ein 10x10-Gitter in Java zu erstellen, und ich habe versucht, die DrawLines-Funktion zu verwenden, um dies zu tun. Wenn ich das Programm ausführe, sehe ich nur ein leeres Fenster, das sich nicht schließen lässt. Dies sind meine zwei Klassen, um das Raster zu zeichnen. Könnte jemand erklären, warum dieser Code nicht funktioniert?Blank Frame in Java Frame

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); 
    } 
} 

Antwort

0

einen Ausdruck zu paintGrid wie hinzufügen: System.out.println("paintGrid invoked");
Hat es jemals aufgerufen werden?
Dies könnte helfen: Performing Custom Painting

0

Sie u brauchen paint() Methode in Canvas Klasse außer Kraft zu setzen Ihr Ziel und zum Schließen des Fensters zu erreichen, müssen Sie WindowListener hinzufügen, um das Fenster zu entsorgen (oder u einfach javax.swing.JFrame Klasse stattdessen verwenden könnte von java.awt.Frame)

siehe den Code unten

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); 
    } 
}