make a JLabel wrap it's text by setting a max width

No.

You can use HTML in the label, but then you must hard code the break tag.

A better approach is to use a JTextArea and turn wrapping on. You can change the background,foreground, font etc. of the text are to make it look like a label.

Note, this answer is outdated as of at least Java 7.

As per @darren's answer, you simply need to wrap the string with <html> and </html> tags:

myLabel.setText("<html>"+ myString +"</html>");

You do not need to hard-code any break tags. The text wraps as the component resizes.


Yes there are two similar ways (first with css style="width:...px", second with html WIDTH=.......:

1.

labelText = String.format("<html><div style=\"width:%dpx;\">%s</div></html>", width, text);

2.

labelText = String.format("<html><div WIDTH=%d>%s</div></html>", width, text);