当摆动Canvas图形初始化?

时间:2016-10-26 13:32:25

标签: java swing canvas awt

我正在学习Java Swing Now。当我尝试在JFrame中使用canvas时,我遇到了困惑的情况。

我在我的代码中调用graphics.fillRect,但画布将在0.1秒之后重置。我的代码在这里:

public static <T> void main(String[] args) throws Exception {
    JFrame window = new JFrame("天码营贪吃蛇游戏");
    Canvas canvas = new Canvas();
    canvas.setSize(500, 500);
    canvas.setVisible(true);
    window.add(canvas, BorderLayout.CENTER);
    window.setSize(500, 500);
    window.setResizable(false);
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    window.setVisible(true);
    Graphics graphics = canvas.getGraphics();
    graphics.setColor(Color.black);
    graphics.fillRect(0, 0, 500, 500);
}

因此,当我运行代码时,我将在Windows中看到原始画布。我试过Thread.sleep(1000);,然后我就能看到黑色背景。是否有任何线程会重置我的画布?

1 个答案:

答案 0 :(得分:1)

这是因为你的画布一遍又一遍地重新粉刷。您需要创建一个派生自Canvas-Class的类并覆盖其paint-Method(可能需要在Javadoc中查找正确的名称)。这样,每次被要求重新绘制时,它都会被重新绘制。