Sign in to follow this  
Addictman

[java] java.lang.IllegalStateException: Component must have a valid peer

Recommended Posts

Does anyone know what could cause this exception at the lines below? It happens seemingly at random. I guess the bufferstrategy is not displayable or "flippable"/"blittable", IE: The buffers are not ready. But I cannot really say why... BufferStrategy bufferStrat = myWindow.getBufferStrategy(); if(!bufferStrat.contentsLost()) bufferStrat.show(); Ideas anyone?

Share this post


Link to post
Share on other sites
Hi,

Hmmm.... I had that same problem a couple times...

The problem is when you call getBufferStrategy, the first call eventually trickles down to the Component's createBuffers function. Now, that function, must call the Component's peer member's function of the same name, which of course cannot be done if the peer is null. The question is then, when does the peer get set? Well, that happens, according to the documentation:


The peer is set when the Component is added to a container that
also is a peer.


Well, then, I guess what that means is that if you want to get the buffer strategy of a window, then you can't do it until you call the window.setVisible(true), or the show function, because if I am not mistaken, that's when the top-level window obtains it's "peer".

In other words, for instance, this code:


JFrame frame = new JFrame("Test Frame");
BufferStrategy strat = frame.getBufferStrategy();



would produce exactly the exception you are seeing.

Vovan

PS: Of course, I am no expert on Java, so I might be wrong. :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this