The use of HTML is supported by most Swing components. For example, it is possible to use HTML markup to create multiline and multifont labels:
JLabel label = new JLabel("<html>line 1<p><font color=blue size=+2>" + "big blue</font> line 2<p>line 3</html>");
There are a number of things to watch out for when taking advantage of Swing’s HTML support:
The text is interpreted as HTML only if the first six characters are
<html>
(case doesn’t matter).The font of components using HTML may not match that of components that don’t.
Bad HTML may throw
RuntimeException
s, so test your code thoroughly. (Older SDKs are especially fragile in this respect. SDK 1.2 can’t even handle an unknown tag.)There is no good way to determine if a particular component supports HTML programmatically.
XHTML-style self-closing tags (such as
<br />
) insert a spurious>
character into the output, at least as of SDK 1.4.1.SDKs prior to 1.3 are unable to size properly in the presence of
<br>
tags, so for maximum compatibility use<p>
tags instead. Newer SDKs treat the two tags identically.
HTML support keeps improving with each release of Swing, but
serious bugs remain. Slightly older releases are riddled with bugs in
their HTML implementations. (Versions 1.1 and earlier don’t support HTML
at all. The JLabel
would be displayed
as 77 characters of verbatim text, just like the java.awt.Label
in Figure 4-6.)
As of SDK 1.4.1 the following components support HTML
text:[2] JLabel
, JButton
, JToggleButton
, JCheckBox
, JRadioButton
, JMenu
, JMenuItem
, JCheckBoxMenuItem
, JRadioButtonMenuItem
, JComboBox
, JList
, the tabs of JTabbedPane
, JTable
,[3] JTree
, and JToolTip
. (And, of course, JEditorPane
was designed to support HTML from
day one.)
[2] The list for 1.3 is the same, but with several more sizing
problems. 1.2 does not support HTML with JToggleButton
, JCheckBox
, or JRadioButton
.
[3] HTML works in table rows and in the table header, but as of SDK 1.4.1, neither is automatically resized if the HTML needs more vertical space than a single line of plain text. You might have to manually resize them.
Get Java Swing, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.