Download the JDK
Search the Tutorials
Hide the TOC
Trail: Creating a GUI with JFC/Swing
Lesson: Using Swing Components
Using Swing Components
A Visual Index to the Swing Components
Using HTML in Swing Components
Using Top-Level Containers
Using Models
The JComponent Class
Using Text Components
Text Component Features
The Text Component API
How to Use Various Components
How to Make Applets
How to Use Buttons, Check Boxes, and Radio Buttons
How to Use Color Choosers
How to Use Combo Boxes
How to Make Dialogs
How to Use Editor Panes and Text Panes
How to Use File Choosers
How to Use Formatted Text Fields
How to Make Frames (Main Windows)
How to Use Internal Frames
How to Use Labels
How to Use Layered Panes
How to Use Lists
How to Use Menus
How to Use Panels
How to Use Password Fields
How to Use Progress Bars
How to Use Root Panes
How to Use Scroll Panes
How to Use Separators
How to Use Sliders
How to Use Spinners
How to Use Split Panes
How to Use Tabbed Panes
How to Use Tables
How to Use Text Areas
How to Use Text Fields
How to Use Tool Bars
How to Use Tool Tips
How to Use Trees
How to Use Icons
How to Use Borders
Solving Common Component Problems
Home Page > Creating a GUI with JFC/Swing > Using Swing Components
« Previous • Trail • Next »
Using HTML in Swing Components

> Many Swing components display a text string as part of their GUI. By default, a component's text is displayed in a single font and color, all on one line. You can determine the font and color of a component's text by invoking the component's `setFont` and `setForeground` methods, respectively. For example, the following code creates a label and then sets its font and color:

> >     label = new JLabel("A label");
> >     label.setFont(new Font("Serif", Font.PLAIN, 14));
> >     label.setForeground(new Color(0xffffdd));

> If you want to mix fonts or colors within the text, or to have formatting such as multiple lines, you can use HTML. HTML formatting can be used in all Swing buttons, menu items, labels, tool tips, and tabbed panes, as well as in components such as trees and tables that use labels as renderers.

> To specify that a component's text has HTML formatting, just put the `<html>` tag at the beginning of the text, then use any valid HTML in the remainder. Here is an example of using HTML in a button's text:

> >     button = new JButton("<html><b><u>T</u>wo</b><br>lines</html>");

> Here's the resulting button.

> > Performance note: Because Swing's HTML rendering support uses many classes, users on older systems might notice a delay the first time a component with HTML formatting is shown. One way to avoid the possible delay is not to show the HTML-formatted component immediately, and to create it (or another component that uses HTML) on a background thread.

### An Example: HtmlDemo

> The following snapshot shows an application called HtmlDemo that lets you play with HTML formatting by setting the text on a label.

> > Try This:
> > 1. Run HtmlDemo (it requires release 6) using JavaTM Web Start. Or, to compile and run the example yourself, consult the example index.
> > 2. Edit the HTML in the text area at the left and click the "Change the label" button. The label at the right shows the result.
> > 3. Remove <html> from the text area on the left. The label's text is no longer parsed as HTML.

### Example 2: ButtonHtmlDemo

> Let's look at another example that uses HTML. ButtonHtmlDemo adds font, color, and other text formatting to three buttons. You can find its full source code in `ButtonHtmlDemo.java` and links to its image files in the example index. You can run ButtonHtmlDemo (it requires release 6) using Java Web Start.

> The left and right buttons have multiple lines and text styles and are implemented using HTML. The middle button, on the other hand, uses just one line, font, and color, so it doesn't require HTML. Here is the code that specifies the text formatting for these three buttons:

> >     b1 = new JButton("<html><center><b><u>D</u>isable</b><br>"
> >                      + "<font color=#ffffdd>middle button</font>",
> >                      leftButtonIcon);
> >     Font font = b1.getFont().deriveFont(Font.PLAIN);
> >     b1.setFont(font);
> >     ...
> >     b2 = new JButton("middle button", middleButtonIcon);
> >     b2.setFont(font);
> >     b2.setForeground(new Color(0xffffdd));
> >     ...
> >     b3 = new JButton("<html><center><b><u>E</u>nable</b><br>"
> >                      + "<font color=#ffffdd>middle button</font>",
> >                      rightButtonIcon);
> >     b3.setFont(font);

> Note that we had to use a `<u>` tag to cause the mnemonic characters "D" and "E" to be underlined in the HTML-using buttons. Note also that when a button is disabled, its HTML text unfortunately remains black, instead of becoming gray. (Keep an eye on bug #4783068 to see if this situation changes.)

> This section discussed how to use HTML in ordinary, non-text components. For information on components whose primary purpose is formatting text, see Using Text Components.

« Previous • Trail • Next »
Previous page: A Visual Index to the Swing Components
Next page: Using Top-Level Containers