Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java双缓冲区不';抹掉_Java_Paint_Repaint_Doublebuffered - Fatal编程技术网

java双缓冲区不';抹掉

java双缓冲区不';抹掉,java,paint,repaint,doublebuffered,Java,Paint,Repaint,Doublebuffered,我正在做一个双缓冲的项目。当我画画时,它只是在旧的图层上画画,但我需要擦除它们。Repaint()不起作用,但我猜答案同样简单 有什么想法吗 添加了代码,现在它消失了,但它删除了背景色 public void paint(Graphics g) { super.paint(buffer); for(Projectile p: projectiles) drawRectImage(buffer, p.image, p.getRectangle()); }建议: 如果这是一个Swing

我正在做一个双缓冲的项目。当我画画时,它只是在旧的图层上画画,但我需要擦除它们。Repaint()不起作用,但我猜答案同样简单

有什么想法吗

添加了代码,现在它消失了,但它删除了背景色

 public void paint(Graphics g)
{

super.paint(buffer);


for(Projectile p: projectiles)
drawRectImage(buffer, p.image, p.getRectangle());
}建议:

  • 如果这是一个Swing GUI,那么不要重写paint方法,而是重写
    paintComponent
    方法。这无助于解决当前的问题,但有助于防止将来出现问题,包括绘制边框和子组件的问题
  • 如果是Swing(您也没有说),那么请确保您的绘制组件扩展了JPanel,而不是JComponent,因为JPanel是不透明的,并在其super方法中填充其背景矩形
  • 如果不是摇摆,那么你应该强烈考虑从AWT变为秋千。
  • 如果您仍然被卡住,那么是的,您将希望创建并发布一个。请查看链接
建议:

  • 如果这是一个Swing GUI,那么不要重写paint方法,而是重写
    paintComponent
    方法。这无助于解决当前的问题,但有助于防止将来出现问题,包括绘制边框和子组件的问题
  • 如果是Swing(您也没有说),那么请确保您的绘制组件扩展了JPanel,而不是JComponent,因为JPanel是不透明的,并在其super方法中填充其背景矩形
  • 如果不是摇摆,那么你应该强烈考虑从AWT变为秋千。
  • 如果您仍然被卡住,那么是的,您将希望创建并发布一个。请查看链接
建议:

  • 如果这是一个Swing GUI,那么不要重写paint方法,而是重写
    paintComponent
    方法。这无助于解决当前的问题,但有助于防止将来出现问题,包括绘制边框和子组件的问题
  • 如果是Swing(您也没有说),那么请确保您的绘制组件扩展了JPanel,而不是JComponent,因为JPanel是不透明的,并在其super方法中填充其背景矩形
  • 如果不是摇摆,那么你应该强烈考虑从AWT变为秋千。
  • 如果您仍然被卡住,那么是的,您将希望创建并发布一个。请查看链接
建议:

  • 如果这是一个Swing GUI,那么不要重写paint方法,而是重写
    paintComponent
    方法。这无助于解决当前的问题,但有助于防止将来出现问题,包括绘制边框和子组件的问题
  • 如果是Swing(您也没有说),那么请确保您的绘制组件扩展了JPanel,而不是JComponent,因为JPanel是不透明的,并在其super方法中填充其背景矩形
  • 如果不是摇摆,那么你应该强烈考虑从AWT变为秋千。
  • 如果您仍然被卡住,那么是的,您将希望创建并发布一个。请查看链接

“我的代码很复杂,所以我可以发布它,但是如果有一个简单的修复程序,那么就没有必要了。”
——我怀疑是否有人能够在这一点信息上帮助您。您的代码中有一个bug,因此需要显示您的代码。唯一的例外是,如果您没有在paint(或更好的paintComponent)方法重写中调用super方法。我认为您需要简化代码并发布相关代码,最好是a。您应该在draw方法的开始处绘制一个大矩形。这将“清除”屏幕。请理解,我们建议您避免生成复杂代码的全部原因正是因为这个原因:调试此类代码是一个皇家PIA。所以,帮你自己和我们一个忙——重构,简化。同样,如果在
paintComponent(Graphics g)
override中没有调用
super.paintComponent(g)
,那么将该调用作为第一个方法调用放在那里。如果您已经这样做了,请发布清理后的代码。
“我的代码很复杂,所以我可以发布它,但是如果有简单的修复,那么就没有必要了。”
——我怀疑是否有人能够在这一小部分信息方面帮助您。您的代码中有一个bug,因此需要显示您的代码。唯一的例外是,如果您没有在paint(或更好的paintComponent)方法重写中调用super方法。我认为您需要简化代码并发布相关代码,最好是a。您应该在draw方法的开始处绘制一个大矩形。这将“清除”屏幕。请理解,我们建议您避免生成复杂代码的全部原因正是因为这个原因:调试此类代码是一个皇家PIA。所以,帮你自己和我们一个忙——重构,简化。同样,如果在
paintComponent(Graphics g)
override中没有调用
super.paintComponent(g)
,那么将该调用作为第一个方法调用放在那里。如果您已经这样做了,请发布清理后的代码。
“我的代码很复杂,所以我可以发布它,但是如果有简单的修复,那么就没有必要了。”
——我怀疑是否有人能够在这一小部分信息方面帮助您。您的代码中有一个bug,因此需要显示您的代码。唯一的例外是,如果您没有在paint(或更好的paintComponent)方法重写中调用super方法。我认为您需要简化代码并发布相关代码,最好是a。您应该在draw方法的开始处绘制一个大矩形。这将“清除”屏幕。请理解,我们建议您避免生成复杂代码的全部原因正是因为这个原因:调试此类代码是一个皇家PIA。所以,帮你自己和我们一个忙——重构,简化。再说一次,如果你不是