Java缓冲策略:编译器不喜欢它

时间:2010-11-29 17:07:09

标签: java double-buffering

我试图用画布进行双缓冲,这是我以前从未做过的事情。我利用在线教程,并设置以下代码来实例化画布并为其设置缓冲。我编写了完整的过程,包括渲染graphiocs(此处未显示),编译器接受它。

 volCanvas = new VolCanvas();
 volCanvas.setBackground(Color.black);
 volCanvas.setBounds(10, 380, 1180, 125);
 add(volCanvas);
 volCanvas.createBufferStrategy(2);            (Program blows up here)
 offScreen = volCanvas.getBufferStrategy();
 ofsg = (Graphics2D) offScreen.getDrawGraphics();

但程序在下面代码中的标记行中爆炸。运行时抛出非法状态异常,解释“组件必须具有有效的对等体”。

据我所知,源代码基本上就像我在几个例子中看到的那样,所以我不知道这里发生了什么。任何帮助将不胜感激。

谢谢,

John Doner

1 个答案:

答案 0 :(得分:1)

  

组件必须具有有效的对等体“。

它基本上意味着您的GUI不可见,或者您没有将组件添加到可见的GUI中。

论坛上的其他问题涉及Swing应用程序。您不应该在Swing应用程序中使用AWT组件(Canvas)。在JComponent或JPanel上进行自定义绘制。默认情况下,Swing是双缓冲的。