I do not know how to do this and can not find how on google.
I want to add code to my action listener to disable a jButton after it is clicked an then enable it again after x amount of time.
anyone know how to do this?
I do not know how to do this and can not find how on google.
I want to add code to my action listener to disable a jButton after it is clicked an then enable it again after x amount of time.
anyone know how to do this?
My suggestion:
When te button is clicked:
- disable the button.
- Make a new thread, with a while loop in it.
- Check whether the startTime - currentTime is bigger then the needed time.
- If it is, enable the button.
You should pass the button as a parameter into the thread, so you can enable it.
Any questions, please ask!
The correct way to do this is with a Swing Timer, designed and optimised for exactly this kind of task:
when the button is clicked
disable the button
create and start a new javax.swing.Timer with
a delay equal to how long you want the button disabled for,
and an actionPerformed method that re-enables the button
Yeah, a javax.swing.Timer would probabaly be better, ut a thread (or BackgroundWorker) with a while loop should work I think.
I don't have the time to try it...
Yes, a thread with a loop in the background would work, but at the expense of burning CPU as fast as it could for the entire delay. Also your re-enable code will run on the wrong thread (all Swing code should run on Swing's thread).
javax.swing.Timer uses the same timer/event queue as Swing itself uses for things like the delay before popping up a tooltip. It really is the only recommendable solution.
http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.