Popup similar to Tooltip

R

RC

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!
 
E

Eric Sosman

RC said:
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?

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.
 
D

Daniel Pitts

Eric said:
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.


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.

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

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,021
Latest member
AkilahJaim

Latest Threads

Top