When I try to use HTML with `JOptionPane`, HTML tags are printed instead of HTML formatting

11,863

Solution 1

The entire string needs to be enclosed within the HTML tags. For example:

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

For more information, see How to Use HTML in Swing Components.

Solution 2

Also worth noting: it seems that having a newline in your string triggers JOptionPane to not render the string as HTML, whereas e.g. JLabel does allow newlines in the HTML.

Solution 3

Enclose your entire string within html tags.

Solution 4

The <HTML> and </HTML> tag specify that the input is in HTML. If you want to use HTML in Swing components, they have to either not be HTML, or be entirely in HTML. You can change the background of text by using the <FONT> tag, It might also be neater to enclose your text in <P> tags, but that's more a question of taste.

Try using

String msg = "<HTML><BODY><P>Please fix <FONT style="BACKGROUND-COLOR: #FFCCCC"> this</FONT></P></BODY></HTML>";
Share:
11,863
jadrijan
Author by

jadrijan

Software Engineer

Updated on July 27, 2022

Comments

  • jadrijan
    jadrijan almost 2 years

    For some weird reason when I try to use HTML with JOptionPane, HTML tags are printed instead of HTML formatting.

    String msg = "Please fix <HTML><BODY BGCOLOR=#FFCCCC>this</BODY></HTML>";
    JLabel message = new JLabel(msg);
    JOptionPane.showMessageDialog(MyApp.this, message, "Error!", JOptionPane.ERROR_MESSAGE);
    

    and the output is:

    Please fix <HTML><BODY BGCOLOR=#FFCCCC>this</BODY></HTML>
    
  • dimeros
    dimeros over 6 years
    In other words, replace the \n with the <br> within the html tags.