1

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

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

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

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

谢谢,

约翰·多纳

4

1 回答 1

1

组件必须有一个有效的对等”。

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

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

于 2010-11-29T17:14:12.537 回答