我正在学习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);
,然后我就能看到黑色背景。是否有任何线程会重置我的画布?
答案 0 :(得分:1)
这是因为你的画布一遍又一遍地重新粉刷。您需要创建一个派生自Canvas-Class的类并覆盖其paint-Method(可能需要在Javadoc中查找正确的名称)。这样,每次被要求重新绘制时,它都会被重新绘制。