[Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 420
  • Last Modified:

Multiple JFrame Overlap Problem

Hi there,

I have a problem with 2 JFrames that I display - if I place their windows to overlap each other, and then select the one from behind the other, I then get the contents of the alternate frame showing in the the selected JFrame.

If I then move the misbehaving JFrame around a few times and play around with it, it comes back to normal again.

Any ideas why this would happen?
0
TheOwner
Asked:
TheOwner
  • 5
  • 5
  • 2
2 Solutions
 
CEHJCommented:
Sounds like its painting is being inhibited. Are you doing any processing in event handlers?
0
 
objectsCommented:
you have a problem with your gui painting, you either have an exception occurring or you are blocking the painting.

0
 
TheOwnerAuthor Commented:
Hi there objects,

I do not think I am throwing an exception. I tried searching for blocking painter, etc but I can't find any information on that.

Could you please explain what might block a painting?
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
TheOwnerAuthor Commented:
@CEHJ

My event EventHandlers do very basic things - nothing too intensive at all. They are not being fired off from what I can see though.
0
 
objectsCommented:
can you post an example that demonstrates the problem.
do you do any custom painting?

0
 
TheOwnerAuthor Commented:
Hi objects,

That is correct - I am using Substance LookAndFeel (I am sure you know it). I don't have any custom painting that I have written myself.

If I turn if off, I still get the problem though. I tried just making test JFrame with a button and another with nothing and I still get the same problem. I just made a new JFrame and added the button, followed by the other JFrame with an empty JPanel.

My theory is this has something to do with my threading, do you think this may be the case?
0
 
objectsCommented:
if you have additional threads you need to ensure you do not update your gui from those threads. All gui updates need to be done from the event dispatch thread.


0
 
TheOwnerAuthor Commented:
Hi Objects,

I think we're on to something here - that may be the problem. You see, the problem though is my application generates new JComponents on the fly and I don't see a means to have that inside the EDT.

For example, the application listens on the network for particular responses and then generates GUI JComponents - it can only know what and how many to make once the response has been received.

A little off - topic but just checking if you got my mail I sent through your site?
0
 
objectsCommented:
EventQueue has 2 methods you can use invokeLater() and invokeAndWait()

http://helpdesk.objects.com.au/java/how-do-i-update-my-gui-from-any-thread

> A little off - topic but just checking if you got my mail I sent through your site?

A am just in the process of reading my inbox

0
 
TheOwnerAuthor Commented:
Hi objects,

Well basically I have tried those methods but I still can't understand how to do a dynamic GUI using that methodology. For instance, mine works as follows:

(Pseudocode as it will make it easier to understand)

Network Thread {

while(true) {

read();

if (isGuiInformation) {
JLabel label = new JLabel(<dataFromRead()>)
}

}

}

I can maybe see if I can just use a normal thread instead of a ED Thread.
0
 
objectsCommented:

while(true) {

read();

EventQueue.invokeAndWait(new Runnable() {
   public void run() {
        // update gui here
   }
});


0
 
CEHJCommented:
See the well-documented SwingWorker class for multiple threading with correct handling of the gui
0

Featured Post

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

  • 5
  • 5
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now