Java: JLabel for output
Why using JLabel
for output is usually bad
It's possible to change the text of a JLabel, although this is
not generally a good idea after the user interface is already displayed.
For output JTextField
is often a better choice.
The use of JLabel
for output is mentioned because some textbooks
display output this way.
Here are some reasons not to use it.
- Can't copy to clipboard. The user can not copy text from a
JLabel
, but can from aJTextField
. - Can't set background. Changing the background of individual
components probably isn't a good idea, so this restriction on
JLabels
is not serious. You can change the background of aJTextField
, for better or worse. - Text length. This is where there are some serious
issues. You can always see the entire text
in a
JTextField
, altho you might have to scroll it it's long. There are several possibilities with aJLabel
. You may either not see all of the long text in aJLabel
, or putting long text into aJLabel
may cause the layout to be recomputed, resulting in a truly weird user experience.
Changing the text of a JLabel
Most JLabels are never changed, except for internationalization, and that is done before the user interface is shown. To change the text, use
yourLabel.setText(String newText); //