java – “缓冲区尚未创建”…同时创建缓冲区

前端之家收集整理的这篇文章主要介绍了java – “缓冲区尚未创建”…同时创建缓冲区前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我(我认为是)JFrame的直接BufferStrategy.它是这样创建的:

    // Buffer
    container.createBufferStrategy(2);           
    strategy = container.getBufferStrategy();

但是,偶尔我收到以下错误(指向前一个片段的第一行作为违规项目):

java.lang.IllegalStateException:尚未创建缓冲区

这个错误很奇怪,因为它来来去Go – 有时它被触发,有时不会触发.我怀疑这意味着它是一个线程问题.有没有人对这里可能发生的事情有任何指示?我有点不知所措,因为我已经在尝试做Java希望我做的事情了!

编辑:完整跟踪:

Exception in thread "main" java.lang.IllegalStateException: Buffers have not been created
        at sun.awt.windows.WComponentPeer.getBackBuffer(WComponentPeer.java:877)
        at java.awt.Component$FlipBufferStrategy.getBackBuffer(Component.java:3815)
        at java.awt.Component$FlipBufferStrategy.updateInternalBuffers(Component.java:3800)
        at java.awt.Component$FlipBufferStrategy.createBuffers(Component.java:3791)
        at java.awt.Component$FlipBufferStrategy.3015)
        at java.awt.Component.createBufferStrategy(Component.java:3536)
        at java.awt.Window.createBufferStrategy(Window.java:2990)
最佳答案
调用createBufferStrategy时,框架需要可显示.正如camickr指出的那样,你需要从EDT调用它.

确保这一点的一种方法是扩展JFrame并覆盖addNotify:

class MyFrame extends JFrame {
    public void addNotify() {
        super.addNotify();
        // Buffer
        createBufferStrategy(2);           
        strategy = getBufferStrategy();
    }
}
原文链接:https://www.f2er.com/java/437703.html

猜你在找的Java相关文章