我在JLabel中显示一些文本。 基本上,我是动态生成该文本的,然后应用一些HTML标记(例如BR和B)来格式化文本。 最后,我将此格式文本分配给我的JLabel。
现在,我希望Jlabel在到达屏幕末尾时自动将文本换行到下一行,例如"记事本"中的"自动换行"功能。
我怎样才能做到这一点?
仅供参考,安德鲁斯的回答是最好的。
@HovercraftFullOfEels 我只是知道屏幕截图会有所作为! VBG>
是的,我必须再做一点,但是仍然有正确答案的帮助。 我想我应该学习一些HTML和样式...
@AndrewThompson他们很酷,但是让你回答慢! :)
@HovercraftFullOfEels为第二句话+1,不仅仅是您自己,还有任何使用任何语言的服务器端开发人员。 令我惊讶的是(例如)Servlet开发人员对他们的应用程序的HTML了解很少。 喷涌而出。 至于第一个..有人可能认为我不断添加图像是视觉噪声。
@MarianP是的,所以我使用了一个技巧。 将源1发布,然后在编辑中添加图像。 当然,这并没有帮助,因为我写(v。short)的源代码比花两个答案和一个勾号花了更长的时间。 ;)
可以使用HTML样式(CSS)为设置宽度。反过来,这将确定要渲染的行数,并由此确定标签的首选高度。
在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 ="
%1s";Runnable r = () -> {
JOptionPane.showMessageDialog(
null, String.format(html, 200, s));
JOptionPane.showMessageDialog(
null