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

 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();


但是程序在下面的代码中的标志行处崩溃了。运行时将引发非法状态异常,并解释为“组件必须具有有效的同级”。

据我所知,源代码本质上就是我在几个示例中所看到的,因此我不知道这里发生了什么。任何帮助将不胜感激。

谢谢,

约翰·多纳

最佳答案

组件必须具有有效的对等项。


这基本上意味着您的GUI不可见,或者您尚未将组件添加到可见的GUI。

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

10-07 16:16