[英]Blank Frame in Java Frame
我一直在嘗試用Java創建10x10網格,並嘗試使用drawLines函數。 但是,當我運行該程序時,看到的只是一個空白窗口,該窗口不會關閉。 這是我的兩個繪制網格的課程。 有人可以解釋為什么此代碼不起作用嗎?
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);
}
}
將打印輸出添加到paintGrid
例如: System.out.println("paintGrid invoked");
它曾經被調用過嗎?
這可能會有所幫助: 執行自定義繪畫
您需要重寫Canvas
類中的paint()
方法以實現您的目標,並且要關閉窗口,您需要添加WindowListener
來放置窗口(或者您可以簡單地使用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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.