JLabel 是否有“自动换行”属性?
我在JLabel中显示一些文本。基本上,我是动态生成该文本,然后应用一些HTML标记(例如,和)来格式化文本。最后,我将这个格式化的文本分配给我的JLabel。BR
B
现在,我希望我的 Jlabel 在文本到达屏幕末尾时自动将文本换行到下一行,就像记事本中的“自动换行”功能一样。
我该怎么做?
我在JLabel中显示一些文本。基本上,我是动态生成该文本,然后应用一些HTML标记(例如,和)来格式化文本。最后,我将这个格式化的文本分配给我的JLabel。BR
B
现在,我希望我的 Jlabel 在文本到达屏幕末尾时自动将文本换行到下一行,就像记事本中的“自动换行”功能一样。
我该怎么做?
可以为使用 HTML 样式 (CSS) 设置宽度。这反过来将确定要渲染的行数,并从中确定标签的首选高度。body
在 CSS 中设置宽度可避免计算标签中应出现换行的位置(或标签的最佳大小)。
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);
}
}
如果将文本换行<html>...</html>
更新:那么,您可能也应该设置最大大小。