簡體   English   中英

Java框架中的空白框架

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM