Newline in JLabel
How can I display a newline in JLabel
?
For example, if I wanted:
Hello World!
blahblahblah
This is what I have right now:
JLabel l = new JLabel("Hello World!\nblahblahblah", SwingConstants.CENTER);
This is what is displayed:
Hello World!blahblahblah
Forgive me if this is a dumb question, I'm just learning some Swing basics...
Solution 1:
Surround the string with <html></html>
and break the lines with <br/>
.
JLabel l = new JLabel("<html>Hello World!<br/>blahblahblah</html>", SwingConstants.CENTER);
Solution 2:
You can try and do this:
myLabel.setText("<html>" + myString.replaceAll("<","<").replaceAll(">", ">").replaceAll("\n", "<br/>") + "</html>")
The advantages of doing this are:
- It replaces all newlines with
<br/>
, without fail. - It automatically replaces eventual
<
and>
with<
and>
respectively, preventing some render havoc.
What it does is:
-
"<html>" +
adds an openinghtml
tag at the beginning -
.replaceAll("<", "<").replaceAll(">", ">")
escapes<
and>
for convenience -
.replaceAll("\n", "<br/>")
replaces all newlines bybr
(HTML line break) tags for what you wanted - ... and
+ "</html>"
closes ourhtml
tag at the end.
P.S.: I'm very sorry to wake up such an old post, but whatever, you have a reliable snippet for your Java!
Solution 3:
You can use the MultilineLabel component in the Jide Open Source Components.
http://www.jidesoft.com/products/oss.htm
Solution 4:
You can do
JLabel l = new JLabel("<html><p>Hello World! blah blah blah</p></html>", SwingConstants.CENTER);
and it will automatically wrap it where appropriate.
Solution 5:
Thanks Aakash for recommending JIDE MultilineLabel. JIDE's StyledLabel is also enhanced recently to support multiple line. I would recommend it over the MultilineLabel as it has many other great features. You can check out an article on StyledLabel below. It is still free and open source.
http://www.jidesoft.com/articles/StyledLabel.pdf