Solved

Multiple JFrame Overlap Problem

Posted on 2009-05-14
13
386 Views
Last Modified: 2013-12-22
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
Comment
Question by:TheOwner
  • 5
  • 5
  • 2
13 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 24388343
Sounds like its painting is being inhibited. Are you doing any processing in event handlers?
0
 
LVL 92

Expert Comment

by:objects
ID: 24390643
you have a problem with your gui painting, you either have an exception occurring or you are blocking the painting.

0
 

Author Comment

by:TheOwner
ID: 24391212
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
Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 

Author Comment

by:TheOwner
ID: 24391217
@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
 
LVL 92

Expert Comment

by:objects
ID: 24391285
can you post an example that demonstrates the problem.
do you do any custom painting?

0
 

Author Comment

by:TheOwner
ID: 24391315
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
 
LVL 92

Expert Comment

by:objects
ID: 24391343
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
 

Author Comment

by:TheOwner
ID: 24391361
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
 
LVL 92

Accepted Solution

by:
objects earned 250 total points
ID: 24391387
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
 

Author Comment

by:TheOwner
ID: 24391443
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
 
LVL 92

Assisted Solution

by:objects
objects earned 250 total points
ID: 24391459

while(true) {

read();

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


0
 
LVL 86

Expert Comment

by:CEHJ
ID: 24392894
See the well-documented SwingWorker class for multiple threading with correct handling of the gui
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
how to add new optional parameter to JSP 1 49
factorial example 4 49
spring jars download 1 35
add projects t working set in maven 2 24
Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
The viewer will learn how to use NetBeans IDE 8.0 for Windows to connect to a MySQL database. Open Services Panel: Create a new connection using New Connection Wizard: Create a test database called eetutorial: Create a new test tabel called ee…
The viewer will learn how to synchronize PHP projects with a remote server in NetBeans IDE 8.0 for Windows.

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question