代码之家  ›  专栏  ›  技术社区  ›  John R Doner

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

  •  1
  • John R Doner  · 技术社区  · 14 年前

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

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

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

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

    谢谢,

    约翰多纳

    1 回复  |  直到 14 年前
        1
  •  1
  •   camickr    14 年前

    组件必须具有有效的对等机”。

    它基本上意味着你的图形用户界面不可见,或者你没有将你的组件添加到一个可见的图形用户界面中。

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