我现在正在学习Java Swing。当我尝试在JFrame中使用canvas时,我遇到了一个困惑的情况。
我在代码中调用了graphics.fillRect,但canvas可能会在0.1s之后重置。我的代码如下:
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);,然后我可以看到一个黑色的背景。有没有线程可以重置我的画布?
发布于 2016-10-26 21:35:51
这是因为你的画布被一遍又一遍地重绘。您需要创建一个从Canvas-Class派生的类,并覆盖它的paint-Method (可能需要在Javadoc中查找正确的名称)。这样,每次它被要求重新绘制自己时,它都会重新绘制。
https://stackoverflow.com/questions/40263698
复制相似问题