加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 19:11:56 所属栏目:Java 来源:网络整理
导读:我(我认为是)JFrame的直接BufferStrategy.它是这样创建的: // Buffer container.createBufferStrategy(2); strategy = container.getBufferStrategy(); 但是,偶尔我收到以下错误(指向前一个片段的第一行作为违规项目): java.lang.IllegalStateException:

我(我认为是)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.
最佳答案
调用createBufferStrategy时,框架需要可显示.正如camickr指出的那样,你需要从EDT调用它.

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

class MyFrame extends JFrame {
    public void addNotify() {
        super.addNotify();
        // Buffer
        createBufferStrategy(2);           
        strategy = getBufferStrategy();
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读