Wil*_*ton 5 java swing buffer awt
我(我认为是)JFrame的直接BufferStrategy.它是这样创建的:
// Buffer
container.createBufferStrategy(2);
strategy = container.getBufferStrategy();
Run Code Online (Sandbox Code Playgroud)
但是,偶尔我收到以下错误(指向前一个片段的第一行作为违规项目):
java.lang.IllegalStateException:尚未创建缓冲区
这个错误很奇怪,因为它来来去去 - 有时它被触发,有时不会触发.我怀疑这意味着它是一个线程问题.有没有人对这里可能发生的事情有任何指示?我有点不知所措,因为我已经在尝试做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.<init>(Component.java:3730)
at java.awt.Component$FlipSubRegionBufferStrategy.<init>(Component.java:4253)
at java.awt.Component.createBufferStrategy(Component.java:3612)
at java.awt.Window.createBufferStrategy(Window.java:3015)
at java.awt.Component.createBufferStrategy(Component.java:3536)
at java.awt.Window.createBufferStrategy(Window.java:2990)
Run Code Online (Sandbox Code Playgroud)
Swing 组件默认情况下是双缓冲的,因此无需使用 BufferStrategy。
然而,当您遇到这样的随机错误时,通常是因为代码未在 EDT 上执行。请阅读 Swing 教程中有关并发的部分以获取更多信息。