Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / GUI / February 2008

Tip: Looking for answers? Try searching our database.

Popup similar to Tooltip

Thread view: 
RC - 25 Feb 2008 20:50 GMT
I want a simple popup for few seconds

Popup popup = new Popup(null, new JLabel("Done"), 10, 10);
popup.show();

try {
   Thread.sleep(2000);
} catch (InterruptedException ie) {
}
popup.hide();

Everything is OK except I don't see the word "Done" in the label.
If I comment out the lines for try, Thread.sleep(###) and catch
Then I can see the word "Done in the label, then I can't make the popup
for few seconds.

Anyone knows why the word "Done" won't show up if I use Thread.sleep?
Any idea how do I fix the problem?

I don't need JProgressBar nor JMonitor for  my simple application.
I want similar to the Tooltip popup for few seconds, but without
move the mouse pointer to a particular JComponent.

Thank you in advance!
Eric Sosman - 25 Feb 2008 21:44 GMT
> I want a simple popup for few seconds
>
[quoted text clipped - 13 lines]
>
> Anyone knows why the word "Done" won't show up if I use Thread.sleep?

    You're probably doing the whole thing on the event
dispatching thread, which means the entire GUI stalls
while you're in sleep().  Presumably, it stalls just a
moment or two before the text would have become visible,
and when sleep() returns you tear down the popup before
the text has a chance to finish painting.

> Any idea how do I fix the problem?

    Do your sleeping on a separate thread, letting the
EDT run without interruption.  In your separate thread,
use SwingUtilities.invokeLater() to do things to the GUI.

Signature

Eric.Sosman@sun.com

Daniel Pitts - 25 Feb 2008 23:09 GMT
>> I want a simple popup for few seconds
>>
[quoted text clipped - 26 lines]
> EDT run without interruption.  In your separate thread,
> use SwingUtilities.invokeLater() to do things to the GUI.

Actually, I suggest using a Timer task instead of Thread.sleep in any case.

Signature

Daniel Pitts' Tech Blog: <http://virtualinfinity.net/wordpress/>

RC - 26 Feb 2008 14:48 GMT
> Actually, I suggest using a Timer task instead of Thread.sleep in any case.

Two thumbs up!
Roedy Green - 26 Feb 2008 22:15 GMT
>try {
>    Thread.sleep(2000);
>} catch (InterruptedException ie) {
>}
>popup.hide();

your problem is you made the Swing thread sleep, so it can't do any
painting work, i.e. serving the event queue.

See http://mindprod.com/jgloss/timer.html
http://mindprod.com/jgloss/sleep.html
--

Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.