A width can be set for the body
using HTML styles (CSS). This in turn will determine the number of lines to render and, from that, the preferred height of the label.
Setting the width in CSS avoids the need to compute where line breaks should occur in (or the best size of) the label.
import javax.swing.*;
public class FixedWidthLabel {
public static void main(String[] srgs) {
final String s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean eu nulla urna. Donec sit amet risus nisl, a porta enim. Quisque luctus, ligula eu scelerisque gravida, tellus quam vestibulum urna, ut aliquet sapien purus sed erat. Pellentesque consequat vehicula magna, eu aliquam magna interdum porttitor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed sollicitudin sapien non leo tempus lobortis. Morbi semper auctor ipsum, a semper quam elementum a. Aliquam eget sem metus.";
final String html = "<html><body style='width: %1spx'>%1s";
Runnable r = () -> {
JOptionPane.showMessageDialog(
null, String.format(html, 200, s));
JOptionPane.showMessageDialog(
null, String.format(html, 300, s));
};
SwingUtilities.invokeLater(r);
}
}
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…