我试图用画布进行双缓冲,这是我以前从未做过的事情。我利用在线教程,并设置以下代码来实例化画布并为其设置缓冲。我编写了完整的过程,包括渲染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
答案 0 :(得分:1)
组件必须具有有效的对等体“。
它基本上意味着您的GUI不可见,或者您没有将组件添加到可见的GUI中。
论坛上的其他问题涉及Swing应用程序。您不应该在Swing应用程序中使用AWT组件(Canvas)。在JComponent或JPanel上进行自定义绘制。默认情况下,Swing是双缓冲的。