How to update JLabel in Swing?
java, swing, timer, user-interface
Solution
I suggest you to call the `JLabel#setText` method each time content is updated. however, due to the very monothread nature of Swing, you have to update its widgets in the so-called Event Dispatch Thread (EDT). To do so, consider calling `SwingUtilities.invokeLater` or `SwingUtilities.invokeAndWait` in your timer code.
This way, when text will be changed due to your call of setText, events of JLabel will propagate correctly, and label will be correctly refreshed.
Problem
I am trying to use Swing Timer and I wanted to start from a very simple program. I have a window with text: "You have n seconds", where n changes from 10 to 0 every second. I know how to generate a window with text. And I understand how Timer works (it starts an action periodically). But I cannot figure out how to combing this two things. Should I use that: `JLabel label = new JLabel(myMessage);` and then with timer I need to update the "myMessage" variable? But I think I need to "force" my window to "update" itself (to display a new value stored in "myMessage").